From 889e30019bf6c03a145045e335323b1ea2c5435a Mon Sep 17 00:00:00 2001 From: Hakan Seven Date: Thu, 15 Oct 2026 03:31:30 +0300 Subject: [PATCH] properties: Ctrl+1 reveals the panel and works over clean screen PROPERTIES only flipped the visibility flag, so a Properties pallet in an edge's inactive group or behind auto-hide stayed out of sight. It now opens through the dock, which brings its group forward. In clean screen the pallet shows on top without changing its normal state; leaving clean screen drops that overlay. Co-Authored-By: Claude Opus 5.5 --- src/app/dock/update.rs | 5 ++++- src/app/mod.rs | 3 +++ src/app/update/mod.rs | 15 ++++++++++++--- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/app/dock/update.rs b/src/app/dock/update.rs index 4ca867c98..cc2c81112 100644 --- a/src/app/dock/update.rs +++ b/src/app/dock/update.rs @@ -553,7 +553,10 @@ impl OpenCADStudio { /// renderer applies before building each side's stack. pub(crate) fn dock_panel_visible(&self, id: crate::ui::dock::PanelId) -> bool { use crate::ui::dock::PanelId; - if self.tabs[self.active_tab].is_start || self.clean_screen { + if self.tabs[self.active_tab].is_start { + return false; + } + if self.clean_screen && !(id == PanelId::Properties && self.clean_screen_properties) { return false; } match id { diff --git a/src/app/mod.rs b/src/app/mod.rs index cad1551e4..9d193d934 100644 --- a/src/app/mod.rs +++ b/src/app/mod.rs @@ -550,6 +550,8 @@ pub(super) struct OpenCADStudio { status_menu_tooltip_hidden: bool, /// Clean-screen mode: hide ribbon and side panels for a full canvas. clean_screen: bool, + /// Properties opened on top of clean screen (Ctrl+1 while it is on). + clean_screen_properties: bool, /// Quick Properties: show a compact floating property panel on selection. quick_properties: bool, /// Canvas-space cursor position where Quick Properties was last opened. @@ -4582,6 +4584,7 @@ impl OpenCADStudio { otrack_cross: None, otrack_kind: None, clean_screen: false, + clean_screen_properties: false, quick_properties: false, quick_properties_anchor: Point::new(12.0, 12.0), selection_cycling: false, diff --git a/src/app/update/mod.rs b/src/app/update/mod.rs index 66516c997..e0f376b75 100644 --- a/src/app/update/mod.rs +++ b/src/app/update/mod.rs @@ -4993,9 +4993,17 @@ impl OpenCADStudio { Task::none() } Message::ToggleProperties => { - self.show_properties ^= true; - self.ribbon.set_properties(self.show_properties); - Task::none() + let id = crate::ui::dock::PanelId::Properties; + let open = !self.dock_panel_visible(id); + if self.clean_screen { + // Shown over clean screen without changing the panel's + // normal state. + self.clean_screen_properties = open; + if !open { + return Task::none(); + } + } + self.dock_set_open(id, open) } Message::ToggleGraphicAttributes => { let id = crate::ui::dock::PanelId::GraphicAttributes; @@ -5504,6 +5512,7 @@ impl OpenCADStudio { } Message::ToggleCleanScreen => { self.clean_screen ^= true; + self.clean_screen_properties = false; Task::none() } Message::ToggleTransparencyDisplay => {