diff --git a/src/bonsai/bonsai/bim/module/material/operator.py b/src/bonsai/bonsai/bim/module/material/operator.py index b2ab1cfa06..d744ea5780 100644 --- a/src/bonsai/bonsai/bim/module/material/operator.py +++ b/src/bonsai/bonsai/bim/module/material/operator.py @@ -120,6 +120,9 @@ class RenameMaterial(bpy.types.Operator, tool.Ifc.Operator): def _execute(self, context): core.rename_material(tool.Ifc, tool.Material, material=tool.Ifc.get().by_id(self.material), name=self.name) + if screen := context.screen: + for area in screen.areas: + area.tag_redraw() class DisableEditingMaterial(bpy.types.Operator): diff --git a/src/bonsai/test/core/test_material.py b/src/bonsai/test/core/test_material.py index a2cbf8c433..ba83e9884d 100644 --- a/src/bonsai/test/core/test_material.py +++ b/src/bonsai/test/core/test_material.py @@ -93,6 +93,20 @@ class TestRemoveMaterialSet: subject.remove_material_set(ifc, material, material="material") +class TestRenameMaterial: + def test_renaming_a_material(self, ifc, material): + ifc.run("material.edit_material", material="material", attributes={"Name": "name"}).should_be_called() + material.is_editing_materials().should_be_called().will_return(False) + subject.rename_material(ifc, material, material="material", name="name") + + def test_renaming_a_material_and_reloading_imported_materials(self, ifc, material): + ifc.run("material.edit_material", material="material", attributes={"Name": "name"}).should_be_called() + material.is_editing_materials().should_be_called().will_return(True) + material.get_active_material_type().should_be_called().will_return("material_type") + material.import_material_definitions("material_type").should_be_called() + subject.rename_material(ifc, material, material="material", name="name") + + class TestLoadMaterials: def test_run(self, material): material.import_material_definitions("material_type").should_be_called()