[orca: 1/2] Fix window list the second time mouse review gets enabled



commit 5047a1d8537f3656fcbc955fbd3628699bb736b7
Author: Colomban Wendling <cwendling hypra fr>
Date:   Wed Mar 25 18:54:31 2020 +0100

    Fix window list the second time mouse review gets enabled
    
    On initial Wnck calls the signals we connect to get emitted for the
    initial values, but in case we got disabled and re-enabled we have to
    get the initial values manually.
    
    This could in theory be avoided by shutting down Wnck when we get
    disabled, and then the next activation would behave like the initial
    one, but Wnck.shutdown() is documented as being hacky, and seem too
    buggy (spews lots of warnings that are not related to our code).

 src/orca/mouse_review.py | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
---
diff --git a/src/orca/mouse_review.py b/src/orca/mouse_review.py
index d39f65939..c9f6c40ba 100644
--- a/src/orca/mouse_review.py
+++ b/src/orca/mouse_review.py
@@ -345,6 +345,18 @@ class MouseReviewer:
         _eventManager.registerModuleListeners(self._get_listeners())
         screen = Wnck.Screen.get_default()
         if screen:
+            # On first startup windows and workspace are likely to be None,
+            # but the signals we connect to will get emitted when proper values
+            # become available;  but in case we got disabled and re-enabled we
+            # have to get the initial values manually.
+            stacked = screen.get_windows_stacked()
+            if stacked:
+                stacked.reverse()
+                self._all_windows = stacked
+            self._workspace = screen.get_active_workspace()
+            if self._workspace:
+                self._update_workspace_windows()
+
             i = screen.connect("window-stacking-changed", self._on_stacking_changed)
             self._handlerIds[i] = screen
             i = screen.connect("active-workspace-changed", self._on_workspace_changed)
@@ -359,6 +371,9 @@ class MouseReviewer:
         for key, value in self._handlerIds.items():
             value.disconnect(key)
         self._handlerIds = {}
+        self._workspace = None
+        self._windows = []
+        self._all_windows = []
 
         self._active = False
 


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]