From 2b5b7cd607aa033e644729845551c16c539928db Mon Sep 17 00:00:00 2001 From: wmayer Date: Thu, 11 Aug 2022 11:50:53 +0200 Subject: [PATCH] Draft: fix snapper icons * Add convenience function to get 3D views from MDI area * Use 'inherits' instead of 'QMetaObject.className()' to check more reliably for sub-classes --- src/Mod/Draft/draftguitools/gui_snapper.py | 33 +++++++++++----------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/src/Mod/Draft/draftguitools/gui_snapper.py b/src/Mod/Draft/draftguitools/gui_snapper.py index 3bf543ffae27..335ea344f331 100644 --- a/src/Mod/Draft/draftguitools/gui_snapper.py +++ b/src/Mod/Draft/draftguitools/gui_snapper.py @@ -1157,13 +1157,18 @@ def get_cursor_size(self): # This should be in device-independent pixels return 32 + def get_quarter_widget(self, mw): + views = [] + for w in mw.findChild(QtGui.QMdiArea).findChildren(QtGui.QWidget): + if w.inherits("SIM::Coin3D::Quarter::QuarterWidget"): + views.append(w) + return views + def device_pixel_ratio(self): device_pixel_ratio = 1 - mw = Gui.getMainWindow() - for w in mw.findChild(QtGui.QMdiArea).findChildren(QtGui.QWidget): - if w.metaObject().className() == "SIM::Coin3D::Quarter::QuarterWidget": - if int(QtCore.qVersion().split('.')[0]) > 4: - device_pixel_ratio = w.devicePixelRatio() + for w in self.get_quarter_widget(Gui.getMainWindow()): + if int(QtCore.qVersion().split('.')[0]) > 4: + device_pixel_ratio = w.devicePixelRatio() return device_pixel_ratio def get_cursor_with_tail(self, base_icon_name, tail_icon_name=None): @@ -1195,16 +1200,12 @@ def get_cursor_with_tail(self, base_icon_name, tail_icon_name=None): def setCursor(self, mode=None): """Set or reset the cursor to the given mode or resets.""" if self.selectMode: - mw = Gui.getMainWindow() - for w in mw.findChild(QtGui.QMdiArea).findChildren(QtGui.QWidget): - if w.metaObject().className() == "SIM::Coin3D::Quarter::QuarterWidget": - w.unsetCursor() + for w in self.get_quarter_widget(Gui.getMainWindow()): + w.unsetCursor() self.cursorMode = None elif not mode: - mw = Gui.getMainWindow() - for w in mw.findChild(QtGui.QMdiArea).findChildren(QtGui.QWidget): - if w.metaObject().className() == "SIM::Coin3D::Quarter::QuarterWidget": - w.unsetCursor() + for w in self.get_quarter_widget(Gui.getMainWindow()): + w.unsetCursor() self.cursorMode = None else: if mode != self.cursorMode: @@ -1213,10 +1214,8 @@ def setCursor(self, mode=None): if not (mode == 'passive'): tail_icon_name = self.cursors[mode] cur = self.get_cursor_with_tail(base_icon_name, tail_icon_name) - mw = Gui.getMainWindow() - for w in mw.findChild(QtGui.QMdiArea).findChildren(QtGui.QWidget): - if w.metaObject().className() == "SIM::Coin3D::Quarter::QuarterWidget": - w.setCursor(cur) + for w in self.get_quarter_widget(Gui.getMainWindow()): + w.setCursor(cur) self.cursorMode = mode def restack(self):