From 2e7cbb759eb90ce166c2a964df34e420579710e9 Mon Sep 17 00:00:00 2001 From: Dion Moult Date: Sat, 11 Jan 2025 14:51:18 +1100 Subject: [PATCH] Fix #5955. Regression in 0983f812fd where you couldn't remove a style that wasn't being edited. --- src/bonsai/bonsai/bim/module/style/operator.py | 1 - src/bonsai/bonsai/core/style.py | 2 ++ src/bonsai/bonsai/core/tool.py | 1 + src/bonsai/bonsai/tool/style.py | 4 ++++ 4 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/bonsai/bonsai/bim/module/style/operator.py b/src/bonsai/bonsai/bim/module/style/operator.py index b1b63ebca2..ba4b306af4 100644 --- a/src/bonsai/bonsai/bim/module/style/operator.py +++ b/src/bonsai/bonsai/bim/module/style/operator.py @@ -80,7 +80,6 @@ class RemoveStyle(bpy.types.Operator, tool.Ifc.Operator): style: bpy.props.IntProperty() def _execute(self, context): - core.disable_editing_style(tool.Style) # So we don't end up soft-locking style edition core.remove_style(tool.Ifc, tool.Style, style=tool.Ifc.get().by_id(self.style), reload_styles_ui=True) diff --git a/src/bonsai/bonsai/core/style.py b/src/bonsai/bonsai/core/style.py index 685cc2cf88..b555a311e2 100644 --- a/src/bonsai/bonsai/core/style.py +++ b/src/bonsai/bonsai/core/style.py @@ -65,6 +65,8 @@ def remove_style( avoid unnecessary reloads. """ obj = ifc.get_object(style) + if style_tool.is_editing_style() and obj == style_tool.get_currently_edited_material(): + style_tool.disable_editing() # Get style_type before removing object as later StylesData might fail to load # due object not yet removed completely. style_type = style_tool.get_active_style_type() diff --git a/src/bonsai/bonsai/core/tool.py b/src/bonsai/bonsai/core/tool.py index 1f673b9521..4e10708786 100644 --- a/src/bonsai/bonsai/core/tool.py +++ b/src/bonsai/bonsai/core/tool.py @@ -1013,6 +1013,7 @@ class Style: def get_uv_maps(cls, representation): pass def import_presentation_styles(cls, style_type): pass def import_surface_attributes(cls, style): pass + def is_editing_style(cls): pass def is_editing_styles(cls): pass def reload_material_from_ifc(cls, obj): pass def is_style_side_attribute_edited(cls, style, new_attributes): pass diff --git a/src/bonsai/bonsai/tool/style.py b/src/bonsai/bonsai/tool/style.py index 359386b25a..7c6b7fd602 100644 --- a/src/bonsai/bonsai/tool/style.py +++ b/src/bonsai/bonsai/tool/style.py @@ -550,6 +550,10 @@ class Style(bonsai.core.tool.Style): def is_editing_styles(cls) -> bool: return bpy.context.scene.BIMStylesProperties.is_editing + @classmethod + def is_editing_style(cls) -> bool: + return bpy.context.scene.BIMStylesProperties.is_editing_style + @classmethod def select_elements(cls, elements: list[ifcopenshell.entity_instance]) -> None: for element in elements: