Dock: icon tabs with a pallet menu, wider stacking zones

- Dropping on a docked pallet now stacks it above or below over the top
  and bottom 35 % of the slot; only the middle 30 % makes it a tab.
- Tabs show the pallet icon (title as tooltip), aligned to the left.
  Every docked slot has the tab row, so its menu is always reachable.
- A menu button at the right of the tab row lists every pallet with a
  check mark for those shown in this slot. Checking one opens it as a
  tab here (moving it from wherever it was docked); unchecking hides it
  and keeps its tab for next time.

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 15:17:31 +00:00
1 parent 2b2581eb46
commit 1f3fae6d1e
4 files changed
+224 -62

No files matched your search

+3
View File
@@ -868,6 +868,8 @@ pub(super) struct OpenCADStudio {
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>,
/// Slot (side, index) whose pallet menu is open.
pub(crate) dock_tab_menu: Option<(crate::app::config::DockSide, usize)>,
/// 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>,
@@ -4308,6 +4310,7 @@ impl OpenCADStudio {
dock_split_drag: None,
dock_float_resizing: None,
dock_title_hover: None,
dock_tab_menu: None,
xref_col_drag: None,
xref_col_last: None,
xref_split_drag: false,