From 3a752029cdc97b6f4d6fbbab68a8f8cfd43431fc Mon Sep 17 00:00:00 2001 From: gianlucafiore Date: Tue, 11 Aug 2026 08:40:54 -0300 Subject: [PATCH] fix: allow editing dimension styles --- src/app/style_ops.rs | 31 ++----------------------------- src/app/update/mod.rs | 16 ++-------------- src/app/update/style.rs | 15 +-------------- src/app/view/modal.rs | 4 +--- 4 files changed, 6 insertions(+), 60 deletions(-) diff --git a/src/app/style_ops.rs b/src/app/style_ops.rs index cde445d37..0bdad07be 100644 --- a/src/app/style_ops.rs +++ b/src/app/style_ops.rs @@ -612,21 +612,7 @@ impl OpenCADStudio { } pub(super) fn style_delete(&mut self, kind: StyleKind) { - let name = self.style_selected(kind); - if matches!(kind, StyleKind::Dim) - && self.tabs[self.active_tab] - .scene - .document - .dim_styles - .get(&name) - .is_some_and(|style| { - style.xref_reference || style.xref_dependent || !style.xref_handle.is_null() - }) - { - self.command_line - .push_error(crate::t!("Referenced styles are read only.").as_ref()); - return; - } + let name = self.style_selected(kind); if name.eq_ignore_ascii_case("Standard") { self.command_line .push_error(crate::t!("Cannot delete the Standard style.").as_ref()); @@ -671,20 +657,7 @@ impl OpenCADStudio { if new.is_empty() || new.eq_ignore_ascii_case(&old) { return; } - if matches!(kind, StyleKind::Dim) - && self.tabs[self.active_tab] - .scene - .document - .dim_styles - .get(&old) - .is_some_and(|style| { - style.xref_reference || style.xref_dependent || !style.xref_handle.is_null() - }) - { - self.command_line - .push_error(crate::t!("Referenced styles are read only.").as_ref()); - return; - } + if old.eq_ignore_ascii_case("Standard") { self.command_line .push_error(crate::t!("Cannot rename the Standard style.").as_ref()); diff --git a/src/app/update/mod.rs b/src/app/update/mod.rs index 2c0adb8ed..1150026ac 100644 --- a/src/app/update/mod.rs +++ b/src/app/update/mod.rs @@ -7243,21 +7243,9 @@ impl OpenCADStudio { Message::DimStyleDialogSetCurrent => { // Staged: persists on Apply. let i = self.active_tab; - let read_only = self.tabs[i] - .scene - .document - .dim_styles - .get(&self.dimstyle_selected) - .is_some_and(|style| { - style.xref_reference - || style.xref_dependent - || !style.xref_handle.is_null() - }); - if read_only { - return Task::none(); - } + self.tabs[i].scene.document.header.current_dimstyle_name = - self.dimstyle_selected.clone(); + self.dimstyle_selected.clone(); self.sync_ribbon_styles(); self.command_line.push_output(crate::tf!( "Current dim style set to '{}'.", diff --git a/src/app/update/style.rs b/src/app/update/style.rs index 2a8fd1153..4a13eb631 100644 --- a/src/app/update/style.rs +++ b/src/app/update/style.rs @@ -358,15 +358,7 @@ impl OpenCADStudio { pub(in crate::app) fn apply_dimstyle_bufs(&mut self, tab: usize) { let doc = &mut self.tabs[tab].scene.document; - let read_only = doc - .dim_styles - .get(&self.dimstyle_selected) - .is_some_and(|style| { - style.xref_reference || style.xref_dependent || !style.xref_handle.is_null() - }); - if read_only { - return; - } + let text_style_handle = doc .text_styles .get(&self.ds_dimtxsty) @@ -1185,11 +1177,6 @@ pub(super) fn on_text_style_dialog_open(&mut self) -> Task { "dimltex_handle" | "dimltex1_handle" | "dimltex2_handle" ); let doc = &self.tabs[i].scene.document; - if doc.dim_styles.get(&name).is_some_and(|style| { - style.xref_reference || style.xref_dependent || !style.xref_handle.is_null() - }) { - return Task::none(); - } let handle = if value == "Default" || value == "ByBlock" { acadrust::types::Handle::NULL } else if is_lt { diff --git a/src/app/view/modal.rs b/src/app/view/modal.rs index 9906580b9..ac34ad4cf 100644 --- a/src/app/view/modal.rs +++ b/src/app/view/modal.rs @@ -1030,9 +1030,7 @@ impl OpenCADStudio { } }; let ds_sel = doc.dim_styles.get(&self.dimstyle_selected); - let read_only = ds_sel.is_some_and(|style| { - style.xref_reference || style.xref_dependent || !style.xref_handle.is_null() - }); + let read_only = false; let in_use = doc.entities().any(|entity| { matches!(entity, acadrust::EntityType::Dimension(dimension) if dimension.base().style_name.eq_ignore_ascii_case(&self.dimstyle_selected))