Dock: hover-only title buttons, tilted pin, mirrored float grip

- Docked title bars show the pin and close only while the pointer is
  over the bar; the bar keeps a fixed height so nothing jumps.
- Auto-hide on is drawn as a 30° tilted pin (new pin_active.svg)
  instead of a coloured button background, on docked and floating bars.
- A floating panel's resize grip sits in the bottom corner away from its
  title bar. With the bar on the right it is bottom-left (new mirrored
  resize_left.svg) and resizing from there keeps the right edge fixed.
  The bar stays on its side while resizing.
- While a floating panel is dragged, only the drop preview shows it; the
  panel no longer stays drawn at its old place.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013RyGiMXcsf9HTKfqDxaQGt
This commit is contained in:
Claude committed 2026-10-09 10:37:11 +00:00
1 parent 03763ff197
commit 1de5597216
7 files changed
+147 -99

No files matched your search

+6 -2
View File
@@ -863,8 +863,11 @@ pub(super) struct OpenCADStudio {
pub(crate) dock_grab_offset: iced::Vector,
/// Splitter being dragged between two slots on a side (upper, lower).
pub(crate) dock_split_drag: Option<(crate::app::config::DockSide, usize, usize)>,
/// Floating panel being resized from its corner grip.
pub(crate) dock_float_resizing: Option<crate::ui::dock::PanelId>,
/// Floating panel being resized from its corner grip, and whether from
/// the bottom-left corner.
pub(crate) dock_float_resizing: Option<(crate::ui::dock::PanelId, bool)>,
/// Docked panel whose title bar the pointer is over (shows pin / close).
pub(crate) dock_title_hover: Option<crate::ui::dock::PanelId>,
/// Reference-table column currently being width-resized (column index),
/// with the last pointer position. Mirrors the Layers Name-column drag.
pub(crate) xref_col_drag: Option<usize>,
@@ -4304,6 +4307,7 @@ impl OpenCADStudio {
dock_grab_offset: iced::Vector::new(0.0, 0.0),
dock_split_drag: None,
dock_float_resizing: None,
dock_title_hover: None,
xref_col_drag: None,
xref_col_last: None,
xref_split_drag: false,