[orca] Work around unforunate event order when switching page tabs in Gecko apps



commit a5350d44d4f29785e85f0b905867656c07f50e2f
Author: Joanmarie Diggs <jdiggs igalia com>
Date:   Fri Mar 18 15:52:46 2016 -0400

    Work around unforunate event order when switching page tabs in Gecko apps

 src/orca/scripts/web/script.py           |   10 ++++++++++
 src/orca/scripts/web/script_utilities.py |   17 +++++++++++++++++
 2 files changed, 27 insertions(+), 0 deletions(-)
---
diff --git a/src/orca/scripts/web/script.py b/src/orca/scripts/web/script.py
index 7694a00..8ad3fc2 100644
--- a/src/orca/scripts/web/script.py
+++ b/src/orca/scripts/web/script.py
@@ -1594,6 +1594,11 @@ class Script(default.Script):
             debug.println(debug.LEVEL_INFO, msg, True)
             return True
 
+        if self.utilities.eventIsChromePageSwitchNoise(event):
+            msg = "WEB: Ignoring event believed to be chrome page switch noise"
+            debug.println(debug.LEVEL_INFO, msg, True)
+            return True
+
         if not self.utilities.inDocumentContent(event.source):
             msg = "WEB: Event source is not in document content"
             debug.println(debug.LEVEL_INFO, msg, True)
@@ -1614,6 +1619,11 @@ class Script(default.Script):
             debug.println(debug.LEVEL_INFO, msg, True)
             return True
 
+        if self.utilities.eventIsChromePageSwitchNoise(event):
+            msg = "WEB: Ignoring event believed to be chrome page switch noise"
+            debug.println(debug.LEVEL_INFO, msg, True)
+            return True
+
         if not self.utilities.inDocumentContent(event.source):
             msg = "WEB: Event source is not in document content"
             debug.println(debug.LEVEL_INFO, msg, True)
diff --git a/src/orca/scripts/web/script_utilities.py b/src/orca/scripts/web/script_utilities.py
index 7890610..318bcc6 100644
--- a/src/orca/scripts/web/script_utilities.py
+++ b/src/orca/scripts/web/script_utilities.py
@@ -2460,6 +2460,23 @@ class Utilities(script_utilities.Utilities):
 
         return False
 
+    def eventIsChromePageSwitchNoise(self, event):
+        selection = ["object:selection-changed", "object:state-changed:selected"]
+        if not event.type in selection:
+            return False
+
+        roles = [pyatspi.ROLE_PAGE_TAB, pyatspi.ROLE_PAGE_TAB_LIST]
+        if not event.source.getRole() in roles:
+            return False
+
+        if self.inDocumentContent(event.source):
+            return False
+
+        if not self.inDocumentContent(orca_state.locusOfFocus):
+            return False
+
+        return True
+
     def textEventIsDueToInsertion(self, event):
         if not event.type.startswith("object:text-"):
             return False


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