add status-bar collapse toggles for sidebar + context pane (T-294)

Fixed ~24px caret-line cells bookend the status bar (left=sidebar, right=context);
chevron flips per arrangement.isCollapsed (inward=collapse, outward=expand) and
fires the existing sidebar.collapse / context.collapse commands — the mouse
affordance for the already keyboard/CLI-addressable action (D-6). Visual only;
no new collapse logic. Status items shift 28px inward for the reserved cells.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-06-09 18:19:30 +02:00
co-authored by Claude Opus 4.8
parent 2f9159606f
commit 3414db148a
5 changed files with 156 additions and 8 deletions
+7 -4
View File
@@ -69,9 +69,11 @@ void main() {
for (final width in [600.0, 3440.0]) {
await pumpAt(tester, width);
expect(tester.takeException(), isNull, reason: 'width=$width');
// StatusbarHost pads 8px each side → right item's right edge ≈ width - 8.
expect(tester.getTopRight(find.text('RIGHT')).dx, closeTo(width - 8, 1.0), reason: 'right group not at edge at width=$width');
expect(tester.getTopLeft(find.text('LEFT')).dx, closeTo(8, 1.0), reason: 'left not at start at width=$width');
// StatusbarHost pads 4px each side and reserves a fixed 24px collapse-
// toggle cell at each end (T-294), so status items sit 28px inside both
// edges: right item's right edge ≈ width - 28, left item's left ≈ 28.
expect(tester.getTopRight(find.text('RIGHT')).dx, closeTo(width - 28, 1.0), reason: 'right group not at edge at width=$width');
expect(tester.getTopLeft(find.text('LEFT')).dx, closeTo(28, 1.0), reason: 'left not at start at width=$width');
}
});
@@ -83,6 +85,7 @@ void main() {
));
await pumpAt(tester, 3440.0);
expect(tester.takeException(), isNull);
expect(tester.getTopRight(find.text('R2')).dx, closeTo(3440 - 8, 1.0));
// 4px pad + 24px reserved toggle cell at the right end (T-294).
expect(tester.getTopRight(find.text('R2')).dx, closeTo(3440 - 28, 1.0));
});
}