X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;ds=sidebyside;f=src%2Futil%2Fqwrappers.py;h=df69f4199b3c15d5f6b1e205125427f67d71af33;hb=60a1e27f154a516ce3de1045f0550a54de342cc7;hp=8577e634896335e1215de0692801684ec1c01f9a;hpb=a33ea3a4f4ef862030bd2c6406fa3c1c44f0edad;p=ejpi 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)