From 4de4b667bc90bea890cb52a85fd2bc8bf4e12206 Mon Sep 17 00:00:00 2001 From: bgbsww Date: Mon, 11 Dec 2023 16:30:00 -0500 Subject: [PATCH] Don't override child visibility in Arch BuildingPart or GroupExtensions --- src/App/GroupExtension.cpp | 2 -- src/Mod/Arch/TestArch.py | 40 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/src/App/GroupExtension.cpp b/src/App/GroupExtension.cpp index 3859b8594a..ed0adda69f 100644 --- a/src/App/GroupExtension.cpp +++ b/src/App/GroupExtension.cpp @@ -364,8 +364,6 @@ void GroupExtension::extensionOnChanged(const Property* p) { } void GroupExtension::slotChildChanged(const DocumentObject &obj, const Property &prop) { - if(&prop == &obj.Visibility) - _GroupTouched.touch(); } bool GroupExtension::extensionGetSubObject(DocumentObject *&ret, const char *subname, diff --git a/src/Mod/Arch/TestArch.py b/src/Mod/Arch/TestArch.py index 158458fdbe..cfce1fc6b9 100644 --- a/src/Mod/Arch/TestArch.py +++ b/src/Mod/Arch/TestArch.py @@ -713,11 +713,51 @@ class ArchTest(unittest.TestCase): Arch.removeComponents(win, host=wall) App.ActiveDocument.recompute() bp = Arch.makeBuildingPart() + + # Wall visibility works when standalone + FreeCADGui.Selection.clearSelection() + FreeCADGui.Selection.addSelection('ArchTest',wall.Name) + assert wall.Visibility + FreeCADGui.runCommand('Std_ToggleVisibility',0) + App.ActiveDocument.recompute() + assert not wall.Visibility + FreeCADGui.runCommand('Std_ToggleVisibility',0) + assert wall.Visibility + bp.Group = [wall] App.ActiveDocument.recompute() # Fails with OCC 7.5 # self.assertTrue(len(bp.Shape.Faces) == 16, "'{}' failed".format(operation)) + # Wall visibility works when inside a BuildingPart + FreeCADGui.runCommand('Std_ToggleVisibility',0) + App.ActiveDocument.recompute() + assert not wall.Visibility + FreeCADGui.runCommand('Std_ToggleVisibility',0) + assert wall.Visibility + + # Wall visibility works when BuildingPart Toggled + FreeCADGui.Selection.clearSelection() + FreeCADGui.Selection.addSelection('ArchTest',bp.Name) + FreeCADGui.runCommand('Std_ToggleVisibility',0) + assert not wall.Visibility + FreeCADGui.runCommand('Std_ToggleVisibility',0) + assert wall.Visibility + + # Wall visibiity works inside group inside BuildingPart Toggled + grp = App.ActiveDocument.addObject("App::DocumentObjectGroup","Group") + grp.Label="Group" + grp.Group = [wall] + bp.Group = [grp] + App.ActiveDocument.recompute() + assert wall.Visibility + FreeCADGui.runCommand('Std_ToggleVisibility',0) + App.ActiveDocument.recompute() + assert not wall.Visibility + FreeCADGui.runCommand('Std_ToggleVisibility',0) + App.ActiveDocument.recompute() + assert wall.Visibility + def tearDown(self): App.closeDocument("ArchTest") pass