diff --git a/src/Mod/Arch/ArchComponent.py b/src/Mod/Arch/ArchComponent.py index 91dfd7646..fba1fff4b 100644 --- a/src/Mod/Arch/ArchComponent.py +++ b/src/Mod/Arch/ArchComponent.py @@ -751,6 +751,10 @@ class ViewProviderComponent: def claimChildren(self): if hasattr(self,"Object"): + prefs = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Arch") + swalA = prefs.GetBool("swallowAdditions",True) + swalS = prefs.GetBool("swallowSubtractions",True) + swalW = prefs.GetBool("swallowWindows",True) c = [] if hasattr(self.Object,"Base"): if Draft.getType(self.Object) != "Wall": @@ -759,13 +763,16 @@ class ViewProviderComponent: c = [] else: c = [self.Object.Base] - if hasattr(self.Object,"Additions"): + if hasattr(self.Object,"Additions") and swalA: c.extend(self.Object.Additions) - if hasattr(self.Object,"Subtractions"): + if hasattr(self.Object,"Subtractions") and swalS: for s in self.Object.Subtractions: if Draft.getType(self.Object) == "Wall": if Draft.getType(s) == "Roof": continue + if (Draft.getType(s) == "Window") or Draft.isCloneOf(s,"Window"): + if not swalW: + continue c.append(s) if hasattr(self.Object,"Armatures"): c.extend(self.Object.Armatures) diff --git a/src/Mod/Arch/Resources/ui/preferences-arch.ui b/src/Mod/Arch/Resources/ui/preferences-arch.ui index 2cccba18c..92c98f962 100644 --- a/src/Mod/Arch/Resources/ui/preferences-arch.ui +++ b/src/Mod/Arch/Resources/ui/preferences-arch.ui @@ -6,8 +6,8 @@ 0 0 - 460 - 602 + 414 + 696 @@ -118,6 +118,77 @@ + + + + Tree behaviour + + + + + + + + If these options are checked, the respective components will appear under their host object in the tree view. Otherwise, next to them. + + + Swallow + + + + + + + Additions + + + true + + + swallowAdditions + + + Mod/Arch + + + + + + + Subtractions + + + true + + + swallowSubtractions + + + Mod/Arch + + + + + + + Windows + + + true + + + swallowWindows + + + Mod/Arch + + + + + + + +