[orca/gnome-3-36] Improve live region support



commit 697732a1e11c6a7f51cf57e5abd3215af1d5164d
Author: Joanmarie Diggs <jdiggs igalia com>
Date:   Wed Mar 4 17:58:40 2020 +0100

    Improve live region support
    
    * Handle text insertions from live regions with embedded object
      characters as long as there is some other presentable text.
      Filtering these out was causing some live region messages to
      not be presented.
    * Look for duplicate messages and filter them out. Some web apps
      are spammy.

 src/orca/scripts/web/script.py           |  2 --
 src/orca/scripts/web/script_utilities.py | 11 ++++++++---
 2 files changed, 8 insertions(+), 5 deletions(-)
---
diff --git a/src/orca/scripts/web/script.py b/src/orca/scripts/web/script.py
index db47bef06..9cba08984 100644
--- a/src/orca/scripts/web/script.py
+++ b/src/orca/scripts/web/script.py
@@ -2123,8 +2123,6 @@ class Script(default.Script):
             debug.println(debug.LEVEL_INFO, msg, True)
             return True
 
-        # TODO - JD: As an experiment, we're stopping these at the event manager.
-        # If that works, this can be removed.
         if self.utilities.eventIsEOCAdded(event):
             msg = "WEB: Ignoring: Event was for embedded object char"
             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 066d95a90..d8fd3020f 100644
--- a/src/orca/scripts/web/script_utilities.py
+++ b/src/orca/scripts/web/script_utilities.py
@@ -4087,14 +4087,12 @@ class Utilities(script_utilities.Utilities):
 
         return self._treatObjectAsWhole(event.source)
 
-    # TODO - JD: As an experiment, we're stopping these at the event manager.
-    # If that works, this can be removed.
     def eventIsEOCAdded(self, event):
         if not self.inDocumentContent(event.source):
             return False
 
         if event.type.startswith("object:text-changed:insert"):
-            return self.EMBEDDED_OBJECT_CHARACTER in event.any_data
+            return not re.match("[^\s\ufffc]", event.any_data)
 
         return False
 
@@ -4725,6 +4723,13 @@ class Utilities(script_utilities.Utilities):
                 debug.println(debug.LEVEL_INFO, msg, True)
                 return False
 
+            if self._lastQueuedLiveRegionEvent \
+               and self._lastQueuedLiveRegionEvent.type == event.type \
+               and self._lastQueuedLiveRegionEvent.any_data == event.any_data:
+                msg = "WEB: Event is believed to be duplicate message"
+                debug.println(debug.LEVEL_INFO, msg, True)
+                return False
+
         if isinstance(event.any_data, pyatspi.Accessible):
             try:
                 role = event.any_data.getRole()


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