[orca] Event Manager: Handle name/description change floods



commit 8e863de81e6bb6cc758dc0fd4a6a9295ee5a90cb
Author: Joanmarie Diggs <jdiggs igalia com>
Date:   Mon Nov 8 13:48:58 2021 +0100

    Event Manager: Handle name/description change floods
    
    Mainly needed for web content during page (re)loads.
    
    * Include name and description changes to the flood types we handle
    * Use any busy-changed event as an opportunity to prune spammy events
    * Check if pruning is needed during processing object events; not just
      when enqueueing them

 src/orca/event_manager.py | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)
---
diff --git a/src/orca/event_manager.py b/src/orca/event_manager.py
index d68a916e5..79f100440 100644
--- a/src/orca/event_manager.py
+++ b/src/orca/event_manager.py
@@ -789,6 +789,8 @@ class EventManager:
                   "object:text-changed:insert:system",
                   "object:children-changed:add",
                   "object:children-changed:add:system",
+                  "object:property-change:accessible-name",
+                  "object:property-change:accessible-description",
                   "object:state-changed:showing",
                   "object:state-changed:sensitive"]
 
@@ -815,6 +817,8 @@ class EventManager:
                   "object:text-changed:insert:system",
                   "object:children-changed:add",
                   "object:children-changed:add:system",
+                  "object:property-change:accessible-name",
+                  "object:property-change:accessible-description",
                   "object:state-changed:showing",
                   "object:state-changed:sensitive"]
 
@@ -845,7 +849,7 @@ class EventManager:
             return True
 
         if event.type.startswith("object:state-changed:busy"):
-            return not event.detail1
+            return True
 
         return False
 
@@ -937,10 +941,15 @@ class EventManager:
             debug.println(debug.LEVEL_INFO, msg, True)
             return
 
-        if self._inFlood() and not self._processDuringFlood(event):
-            msg = 'EVENT MANAGER: Not processing this event due to flood.'
-            debug.println(debug.LEVEL_INFO, msg, True)
-            return
+        if self._inFlood():
+            if not self._processDuringFlood(event):
+                msg = 'EVENT MANAGER: Not processing this event due to flood.'
+                debug.println(debug.LEVEL_INFO, msg, True)
+                return
+            if self._prioritizeDuringFlood(event):
+                msg = 'EVENT MANAGER: Pruning event queue due to flood.'
+                debug.println(debug.LEVEL_INFO, msg, True)
+                self._pruneEventsDuringFlood()
 
         if eType.startswith('object:selection-changed') \
            and event.source in self._parentsOfDefunctDescendants:


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