[orca] Filter out bogus and duplicate object:state-changed:selected events
- From: Joanmarie Diggs <joanied src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [orca] Filter out bogus and duplicate object:state-changed:selected events
- Date: Sat, 20 Feb 2016 00:49:19 +0000 (UTC)
commit 32c255db2c3d5bc042fa07c4f6ca958d1da2c93c
Author: Joanmarie Diggs <jdiggs igalia com>
Date: Fri Feb 19 19:48:07 2016 -0500
Filter out bogus and duplicate object:state-changed:selected events
src/orca/scripts/default.py | 16 ++++++++++++++++
1 files changed, 16 insertions(+), 0 deletions(-)
---
diff --git a/src/orca/scripts/default.py b/src/orca/scripts/default.py
index cf52a92..3f4d50c 100644
--- a/src/orca/scripts/default.py
+++ b/src/orca/scripts/default.py
@@ -784,6 +784,8 @@ class Script(script.Script):
self.pointOfReference['checkedChange'] = \
hash(obj), state.contains(pyatspi.STATE_CHECKED)
+ self.pointOfReference['selectedChange'] = \
+ hash(obj), state.contains(pyatspi.STATE_SELECTED)
def locusOfFocusChanged(self, event, oldLocusOfFocus, newLocusOfFocus):
"""Called when the visual object with focus changes.
@@ -2321,6 +2323,7 @@ class Script(script.Script):
"""Callback for object:state-changed:selected accessibility events."""
obj = event.source
+ obj.clearCache()
state = obj.getState()
if not state.contains(pyatspi.STATE_FOCUSED):
return
@@ -2332,6 +2335,17 @@ class Script(script.Script):
return
isSelected = state.contains(pyatspi.STATE_SELECTED)
+ if isSelected != event.detail1:
+ msg = "DEFAULT: Bogus event: detail1 doesn't match state"
+ debug.println(debug.LEVEL_INFO, msg, True)
+ return
+
+ oldObj, oldState = self.pointOfReference.get('selectedChange', (None, 0))
+ if hash(oldObj) == hash(obj) and oldState == event.detail1:
+ msg = "DEFAULT: Duplicate or spam event"
+ debug.println(debug.LEVEL_INFO, msg, True)
+ return
+
announceState = False
keyString, mods = self.utilities.lastKeyAndModifiers()
if keyString == "space":
@@ -2354,6 +2368,8 @@ class Script(script.Script):
else:
speech.speak(messages.TEXT_UNSELECTED, voice, False)
+ self.pointOfReference['selectedChange'] = hash(obj), event.detail1
+
def onSelectionChanged(self, event):
"""Callback for object:selection-changed accessibility events."""
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]