Skip to content

fix(ui): persist sidebar width on keyboard resize and flush settle; dropdown exit animation #354

Description

@ZhuchkaTriplesix

Context

Follow-ups from Bugbot review of the Fluid morphing work (#342) after merge to dev.

Bugs

1. Keyboard sidebar resize not persisted (medium)

Where: lib/features/main_screen/main_screen.dart (connections panel width / QueryaSplitHandle)

Connections panel width is written to settings only from onDragEnd via _schedulePersistAfterSettle. Keyboard and semantics resize handlers call onDragDelta only, so accessible resizing never triggers persistence and the width reverts on restart.

Expected: Arrow-key / semantics resize persists like mouse drag-end.

2. Pending width save dropped on dispose (medium)

Where: lib/features/main_screen/main_screen.dart (_schedulePersistAfterSettle / dispose)

When the main split disposes while a post-settle persist listener is still registered, the listener is removed without flushing _leftPanelWidth to AppSettings. Closing or navigating away during spring settle can lose the user’s last resize.

Expected: Flush pending width on dispose (or cancel settle and persist current clamped value).

3. Dropdown exit animation cannot run (low)

Where: lib/shared/widgets/querya_dropdown.dart (_QueryaDropdownMenuEnter / MenuAnchor)

Menu close sets _menuOpen to false, but MenuAnchor removes the menu overlay when close() completes. The fade/slide exit driven by openNotifier is torn down with the menu, so the exit curve never plays and the menu disappears abruptly.

Expected: Either delay close() until exit animation finishes, or document that exit is best-effort / snap-only under MenuAnchor.

Acceptance

  • Keyboard/semantics sidebar resize persists across restart
  • Dispose during settle still saves the last width
  • Dropdown close either shows exit motion or is explicitly snap-only with a short comment + test covering intended behavior
  • Widget tests covering persistence paths

Related

Metadata

Metadata

Labels

bugSomething isn't workinguiUser interface components and widgets

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions