From 60a1e27f154a516ce3de1045f0550a54de342cc7 Mon Sep 17 00:00:00 2001 From: Ed Page Date: Wed, 12 Jan 2011 21:05:10 -0600 Subject: [PATCH] Reducing redraws when going through the rotations --- src/ejpi_qt.py | 1 + src/util/qwrappers.py | 28 ++++++++++++++++++++++++++++ 2 files changed, 29 insertions(+) diff --git a/src/ejpi_qt.py b/src/ejpi_qt.py index 82cd74e..3210ec7 100755 --- a/src/ejpi_qt.py +++ b/src/ejpi_qt.py @@ -133,6 +133,7 @@ class MainWindow(qwrappers.WindowWrapper): def __init__(self, parent, app): qwrappers.WindowWrapper.__init__(self, parent, app) self._window.setWindowTitle("%s" % constants.__pretty_app_name__) + self._freezer = qwrappers.AutoFreezeWindowFeature(self._app, self._window) self._historyView = qhistory.QCalcHistory(self._app.errorLog) self._userEntry = QValueEntry() diff --git a/src/util/qwrappers.py b/src/util/qwrappers.py index 8577e63..df69f41 100644 --- a/src/util/qwrappers.py +++ b/src/util/qwrappers.py @@ -74,6 +74,10 @@ class ApplicationWrapper(object): raise NotImplementedError("Booh") @property + def qapp(self): + return self._qapp + + @property def constants(self): return self._constants @@ -233,3 +237,27 @@ class WindowWrapper(object): def _on_close_window(self, checked = True): with qui_utils.notify_error(self._errorLog): self.close() + + +class AutoFreezeWindowFeature(object): + + def __init__(self, app, window): + self._app = app + self._window = window + self._app.qapp.focusChanged.connect(self._on_focus_changed) + if self._app.qapp.focusWidget() is not None: + self._window.setUpdatesEnabled(True) + else: + self._window.setUpdatesEnabled(False) + + def close(self): + self._app.qapp.focusChanged.disconnect(self._on_focus_changed) + self._window.setUpdatesEnabled(True) + + @misc_utils.log_exception(_moduleLogger) + def _on_focus_changed(self, oldWindow, newWindow): + with qui_utils.notify_error(self._app.errorLog): + if oldWindow is None and newWindow is not None: + self._window.setUpdatesEnabled(True) + elif oldWindow is not None and newWindow is None: + self._window.setUpdatesEnabled(False) -- 1.7.9.5