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
+
+
+
+
+
+
+
+
-