forked from 1b-agent/opencadstudio-upstream
Merge pull request #1702 from MarcelP102/Pallet-placement
[UX] Pallets you can dock, group and float (including LAYERS panel)
This commit is contained in:
commit
7ca457a6cc
54 files changed
+4245
-1098
No files matched your search
+17
-24
@@ -2608,27 +2608,19 @@ impl OpenCADStudio {
|
||||
Message::ScriptLine(line) => self.feed_script_line(&line),
|
||||
|
||||
Message::ToggleLayers => {
|
||||
if self.active_modal == Some(super::ModalKind::Layers) {
|
||||
self.ribbon.deactivate_tool_if("LAYERS");
|
||||
self.active_modal = None;
|
||||
self.reset_modal_geometry();
|
||||
} else {
|
||||
self.sync_ribbon_layers();
|
||||
self.active_modal = Some(super::ModalKind::Layers);
|
||||
if self.show_layers {
|
||||
return self.on_dock(crate::ui::dock::DockMsg::Close(
|
||||
crate::ui::dock::PanelId::Layers,
|
||||
));
|
||||
}
|
||||
self.open_layers_pallet();
|
||||
Task::none()
|
||||
}
|
||||
|
||||
Message::ToggleXrefManager => {
|
||||
self.show_external_references ^= true;
|
||||
if self.show_external_references {
|
||||
use crate::app::config::DockSide;
|
||||
use crate::ui::dock::PanelId;
|
||||
if self.dock.location(PanelId::ExternalReferences).is_none() {
|
||||
self.dock
|
||||
.dock(PanelId::ExternalReferences, DockSide::Right, usize::MAX);
|
||||
}
|
||||
self.dock_expanded = Some(PanelId::ExternalReferences);
|
||||
self.dock_open_at_default(crate::ui::dock::PanelId::ExternalReferences);
|
||||
self.refresh_xref_manager();
|
||||
}
|
||||
Task::none()
|
||||
@@ -6362,8 +6354,11 @@ impl OpenCADStudio {
|
||||
// Ctrl+A in the MText editor selects all of its text.
|
||||
self.mtext_select_all();
|
||||
Task::none()
|
||||
} else if self.active_modal == Some(super::ModalKind::Layers) {
|
||||
// Select every row in the Layer Manager (#236).
|
||||
} else if self.dock_panel_visible(crate::ui::dock::PanelId::Layers)
|
||||
&& self.tabs[i].layers.selected.is_some()
|
||||
{
|
||||
// Select every row in the Layer Manager (#236) while the
|
||||
// user is working in it (a layer row is selected).
|
||||
let n = self.tabs[i].layers.layers.len();
|
||||
self.tabs[i].layers.selected_multi = (0..n).collect();
|
||||
self.tabs[i].layers.selected = (n > 0).then_some(0);
|
||||
@@ -9144,17 +9139,16 @@ impl OpenCADStudio {
|
||||
Task::none()
|
||||
}
|
||||
Message::LayerNameColGrab => {
|
||||
// Start a Name-column divider drag; rides ModalDragMove.
|
||||
self.layer_col_dragging = true;
|
||||
self.modal_drag_last = None;
|
||||
// Start a Name-column divider drag; the dock's pointer capture
|
||||
// feeds it (see `on_dock`).
|
||||
self.dock_drag = Some(crate::ui::dock::DockDrag::LayerColumn);
|
||||
self.dock_drag_last = None;
|
||||
Task::none()
|
||||
}
|
||||
Message::ModalDragMove(p) => {
|
||||
if let Some(last) = self.modal_drag_last {
|
||||
let (dx, dy) = (p.x - last.x, p.y - last.y);
|
||||
if self.layer_col_dragging {
|
||||
self.layer_name_col_w = (self.layer_name_col_w + dx).clamp(60.0, 640.0);
|
||||
} else if self.modal_resizing {
|
||||
if self.modal_resizing {
|
||||
// The grip sits bottom-right, so dragging out grows the
|
||||
// box. The delta is added to each dialog's natural size,
|
||||
// so clamp it at zero — dragging in past the natural size
|
||||
@@ -9188,7 +9182,7 @@ impl OpenCADStudio {
|
||||
}
|
||||
}
|
||||
}
|
||||
if self.modal_dragging || self.modal_resizing || self.layer_col_dragging {
|
||||
if self.modal_dragging || self.modal_resizing {
|
||||
self.modal_drag_last = Some(p);
|
||||
}
|
||||
Task::none()
|
||||
@@ -9196,7 +9190,6 @@ impl OpenCADStudio {
|
||||
Message::ModalDragRelease => {
|
||||
self.modal_dragging = false;
|
||||
self.modal_resizing = false;
|
||||
self.layer_col_dragging = false;
|
||||
self.modal_drag_last = None;
|
||||
Task::none()
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user