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 => {