[orca: 1/2] Fix mouse review on some web elements after scrolling



commit 6cf2318bcbbc6a443246a99058d2231b6b2afb06
Author: Colomban Wendling <cwendling hypra fr>
Date:   Wed Mar 11 14:22:24 2020 +0100

    Fix mouse review on some web elements after scrolling
    
    Fix scripts.web.isShowingAndVisible() workaround for outdated cache
    when using mouse review.
    
    https://gitlab.gnome.org/GNOME/orca/issues/81

 src/orca/mouse_review.py                 |  4 ++++
 src/orca/scripts/web/script_utilities.py | 10 ++++++----
 2 files changed, 10 insertions(+), 4 deletions(-)
---
diff --git a/src/orca/mouse_review.py b/src/orca/mouse_review.py
index 97084eccc..b3945facc 100644
--- a/src/orca/mouse_review.py
+++ b/src/orca/mouse_review.py
@@ -311,6 +311,8 @@ class MouseReviewer:
         self._windows = []
         self._handlerIds = {}
 
+        self.inMouseEvent = False
+
         if not _mouseReviewCapable:
             msg = "MOUSE REVIEW ERROR: Wnck is not available"
             debug.println(debug.LEVEL_INFO, msg, True)
@@ -555,7 +557,9 @@ class MouseReviewer:
         debug.println(debug.LEVEL_INFO, msg, False)
 
         if event.type.startswith("mouse:abs"):
+            self.inMouseEvent = True
             self._on_mouse_moved(event)
+            self.inMouseEvent = False
 
         msg = "TOTAL PROCESSING TIME: %.4f\n" % (time.time() - startTime)
         msg += "^^^^^ PROCESS OBJECT EVENT %s ^^^^^\n" % event.type
diff --git a/src/orca/scripts/web/script_utilities.py b/src/orca/scripts/web/script_utilities.py
index b411a764b..bd981d843 100644
--- a/src/orca/scripts/web/script_utilities.py
+++ b/src/orca/scripts/web/script_utilities.py
@@ -34,6 +34,7 @@ import urllib
 from orca import debug
 from orca import input_event
 from orca import messages
+from orca import mouse_review
 from orca import orca
 from orca import orca_state
 from orca import script_utilities
@@ -636,11 +637,12 @@ class Utilities(script_utilities.Utilities):
         if rv or not self.inDocumentContent(obj):
             return rv
 
-        if not self._isOrIsIn(orca_state.locusOfFocus, obj):
-            return rv
+        if not mouse_review.reviewer.inMouseEvent:
+            if not self._isOrIsIn(orca_state.locusOfFocus, obj):
+                return rv
 
-        msg = "WEB: %s contains locusOfFocus but not showing and visible" % obj
-        debug.println(debug.LEVEL_INFO, msg, True)
+            msg = "WEB: %s contains locusOfFocus but not showing and visible" % obj
+            debug.println(debug.LEVEL_INFO, msg, True)
 
         obj.clearCache()
         rv = super().isShowingAndVisible(obj)


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