[orca] Filter out selection-changed events from parents of defunct descendants
- From: Joanmarie Diggs <joanied src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [orca] Filter out selection-changed events from parents of defunct descendants
- Date: Sat, 28 Apr 2018 22:39:30 +0000 (UTC)
commit a7dcb5305a4aaa47fe80c1195eb5757cde76ad27
Author: Joanmarie Diggs <jdiggs igalia com>
Date: Sat Apr 28 18:38:41 2018 -0400
Filter out selection-changed events from parents of defunct descendants
src/orca/event_manager.py | 14 ++++++++++++++
1 files changed, 14 insertions(+), 0 deletions(-)
---
diff --git a/src/orca/event_manager.py b/src/orca/event_manager.py
index 1bbc2ac..2a5928d 100644
--- a/src/orca/event_manager.py
+++ b/src/orca/event_manager.py
@@ -61,6 +61,7 @@ class EventManager:
self._ignoredEvents = ['object:bounds-changed',
'object:state-changed:defunct',
'object:property-change:accessible-parent']
+ self._parentsOfDefunctDescendants = []
debug.println(debug.LEVEL_INFO, 'Event manager initialized', True)
def activate(self):
@@ -196,6 +197,11 @@ class EventManager:
msg = 'EVENT MANAGER: Ignoring event type due to role'
debug.println(debug.LEVEL_INFO, msg, True)
return True
+ elif event.type.startswith('object:selection-changed'):
+ if event.source in self._parentsOfDefunctDescendants:
+ msg = 'EVENT MANAGER: Ignoring event from parent of defunct descendants'
+ debug.println(debug.LEVEL_INFO, msg, True)
+ return True
if event.type.startswith('object:children-changed:add') \
or event.type.startswith('object:active-descendant-changed'):
@@ -216,11 +222,19 @@ class EventManager:
msg = 'ERROR: Event any_data contains potentially-defunct child/descendant'
debug.println(debug.LEVEL_INFO, msg, True)
return True
+
if childState.contains(pyatspi.STATE_DEFUNCT):
+ if state.contains(pyatspi.STATE_MANAGES_DESCENDANTS) \
+ and event.source not in self._parentsOfDefunctDescendants:
+ self._parentsOfDefunctDescendants.append(event.source)
+
msg = 'ERROR: Event any_data contains defunct child/descendant'
debug.println(debug.LEVEL_INFO, msg, True)
return True
+ if event.source in self._parentsOfDefunctDescendants:
+ self._parentsOfDefunctDescendants.remove(event.source)
+
# This should be safe. We do not have a reason to present a newly-added,
# but not focused image. We do not need to update live regions for images.
# This is very likely a completely and utterly useless event for us. The
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]