From f03f4ace116348fee143b19a2cc892a85bb11697 Mon Sep 17 00:00:00 2001 From: Roy-043 <70520633+Roy-043@users.noreply.github.com> Date: Tue, 30 Jul 2024 10:29:30 +0200 Subject: [PATCH] BIM: Fix BIM Views panel open behavior on WB activation (#15617) * BIM: Fix BIM Views panel open behavior on WB activation Fixes #15524. * Something obvious was missed... --- src/Mod/BIM/InitGui.py | 2 +- src/Mod/BIM/bimcommands/BimViews.py | 19 ++++++++++++++----- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/src/Mod/BIM/InitGui.py b/src/Mod/BIM/InitGui.py index 89b8153abb..cdd3117e39 100644 --- a/src/Mod/BIM/InitGui.py +++ b/src/Mod/BIM/InitGui.py @@ -578,8 +578,8 @@ class BIMWorkbench(Workbench): # store views widget state and vertical size w = BimViews.findWidget() - PARAMS.SetBool("RestoreBimViews", bool(w)) if w: + PARAMS.SetBool("RestoreBimViews", w.isVisible()) PARAMS.SetInt("BimViewsSize", w.height()) w.hide() w.toggleViewAction().setVisible(False) diff --git a/src/Mod/BIM/bimcommands/BimViews.py b/src/Mod/BIM/bimcommands/BimViews.py index aa12739da4..2c4097d9a7 100644 --- a/src/Mod/BIM/bimcommands/BimViews.py +++ b/src/Mod/BIM/bimcommands/BimViews.py @@ -54,20 +54,19 @@ class BIM_Views: mw = FreeCADGui.getMainWindow() st = mw.statusBar() statuswidget = st.findChild(QtGui.QToolBar, "BIMStatusWidget") - if statuswidget: - if hasattr(statuswidget, "bimviewsbutton"): - bimviewsbutton = statuswidget.bimviewsbutton + if statuswidget and hasattr(statuswidget, "bimviewsbutton"): + bimviewsbutton = statuswidget.bimviewsbutton if vm: if vm.isVisible(): vm.hide() if bimviewsbutton: bimviewsbutton.setChecked(False) - PARAMS.SetBool("RestoreBimViews", False) + PARAMS.SetBool("RestoreBimViews", False) else: vm.show() if bimviewsbutton: bimviewsbutton.setChecked(True) - PARAMS.SetBool("RestoreBimViews", True) + PARAMS.SetBool("RestoreBimViews", True) self.update() else: vm = QtGui.QDockWidget() @@ -76,6 +75,7 @@ class BIM_Views: self.dialog = FreeCADGui.PySideUic.loadUi(":/ui/dialogViews.ui") vm.setWidget(self.dialog) vm.tree = self.dialog.tree + vm.closeEvent = self.onClose # set context menu self.dialog.tree.setContextMenuPolicy(QtCore.Qt.CustomContextMenu) @@ -159,6 +159,15 @@ class BIM_Views: self.update() + def onClose(self, event): + from PySide import QtGui + + st = FreeCADGui.getMainWindow().statusBar() + statuswidget = st.findChild(QtGui.QToolBar, "BIMStatusWidget") + if statuswidget and hasattr(statuswidget, "bimviewsbutton"): + statuswidget.bimviewsbutton.setChecked(False) + PARAMS.SetBool("RestoreBimViews", False) + def connectDock(self): "watch for dock location"