fix(ribbon): scrollable layer dropdown, stop mouse leak to viewport (#227)

The ribbon layer dropdown grew unbounded so a long layer list ran off the
bottom of the screen with no way to scroll. Cap the panel height and make
the list scrollable; short lists still shrink to fit.

While a dropdown was open, the 3D viewport beneath it kept tracking the
cursor over the panel's empty areas, and the OS cursor vanished there. In
iced 0.14 mouse_area/opaque only capture button presses, never CursorMoved,
so a higher stack layer can't swallow motion — gate it state-side instead:

- ignore viewport motion in on_viewport_move while ribbon.open_dropdown is set
- suppress the crosshair overlay's Hidden cursor (and crosshair draw) so the
  normal OS cursor shows over an open dropdown
- route all ribbon dropdown backdrops through a shared dropdown_backdrop()

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Hakan Seven 2026-07-01 00:45:23 +03:00
commit 3da81571a1
4 changed files with 46 additions and 37 deletions

View file

@ -401,6 +401,7 @@ impl OpenCADStudio {
pane_move_rect,
pane_drop_rect,
tab.pan_mode,
self.ribbon.open_dropdown.is_some(),
)
};