From e29307a4afa42214345c4a8c6cbd1eccc00ba829 Mon Sep 17 00:00:00 2001 From: "Zheng, Lei" Date: Fri, 31 Aug 2018 09:35:08 +0800 Subject: [PATCH] gui: batch selection change using timer --- gui.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/gui.py b/gui.py index 779265d..e5e3c26 100644 --- a/gui.py +++ b/gui.py @@ -9,6 +9,7 @@ from .FCADLogger import FCADLogger class SelectionObserver: def __init__(self): self._attached = False + self.timer = QtCore.QTimer() self.cmds = [] self.elements = dict() self.attach() @@ -74,6 +75,18 @@ class SelectionObserver: logger.catchWarn('',self._setElementVisible,obj,subname,False) def onChange(self,hasSelection=True): + if not hasSelection: + self.timer.stop() + for cmd in self.cmds: + cmd.onSelectionChange(False) + return + if not self.timer.isSingleShot(): + self.timer.setSingleShot(True) + self.timer.timeout.connect(self.onTimer) + self.timer.start(50) + + def onTimer(self): + hasSelection = FreeCADGui.Selection.hasSelection() for cmd in self.cmds: cmd.onSelectionChange(hasSelection)