From f1dffbb90ef02e4af07553a2e66f1b0bb6cd7d3b Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Tue, 16 Sep 2014 20:03:50 -0300 Subject: [PATCH] Arch: Hide/show windows together with their parents - fixes #1733 --- src/Mod/Arch/ArchCommands.py | 7 ++++--- src/Mod/Arch/ArchComponent.py | 4 ++++ src/Mod/Arch/ArchWindow.py | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/src/Mod/Arch/ArchCommands.py b/src/Mod/Arch/ArchCommands.py index 5855a05db..448e8500d 100644 --- a/src/Mod/Arch/ArchCommands.py +++ b/src/Mod/Arch/ArchCommands.py @@ -140,8 +140,6 @@ def removeComponents(objectsList,host=None): for o in objectsList: if not o in s: s.append(o) - if FreeCAD.GuiUp: - o.ViewObject.hide() if Draft.getType(o) == "Window": # fix for sketch-based windows if o.Base: @@ -158,7 +156,10 @@ def removeComponents(objectsList,host=None): if o.Base.ExternalGeometry[i][0].Name == host.Name: o.Base.delExternal(i) FreeCAD.Console.PrintMessage(translate("Arch","removing sketch support to avoid cross-referencing")) - break + break + else: + if FreeCAD.GuiUp: + o.ViewObject.hide() host.Subtractions = s else: for o in objectsList: diff --git a/src/Mod/Arch/ArchComponent.py b/src/Mod/Arch/ArchComponent.py index 0f2bf822c..5f78756f7 100644 --- a/src/Mod/Arch/ArchComponent.py +++ b/src/Mod/Arch/ArchComponent.py @@ -639,6 +639,10 @@ class ViewProviderComponent: return def onChanged(self,vobj,prop): + if prop == "Visibility": + for obj in vobj.Object.Additions+vobj.Object.Subtractions: + if Draft.getType(obj) == "Window": + obj.ViewObject.Visibility = vobj.Visibility return def attach(self,vobj): diff --git a/src/Mod/Arch/ArchWindow.py b/src/Mod/Arch/ArchWindow.py index eeb2aa154..eef380004 100644 --- a/src/Mod/Arch/ArchWindow.py +++ b/src/Mod/Arch/ArchWindow.py @@ -392,7 +392,7 @@ class _CommandWindow: self.FORMAT = DraftGui.makeFormatSpec(self.DECIMALS,'Length') # auto mode - if sel: + if sel and FreeCADGui.Selection.getSelectionEx(): obj = sel[0] if Draft.getType(obj) in AllowedHosts: # make sure only one face is selected