[orca] More work on filtering out useless canvas events
- From: Joanmarie Diggs <joanied src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [orca] More work on filtering out useless canvas events
- Date: Fri, 26 Feb 2016 17:57:03 +0000 (UTC)
commit 0da9456523be2ce442727a668674dece2a93a59b
Author: Joanmarie Diggs <jdiggs igalia com>
Date: Fri Feb 26 12:56:22 2016 -0500
More work on filtering out useless canvas events
src/orca/scripts/toolkits/gtk/script.py | 14 +++++++++-----
src/orca/scripts/toolkits/gtk/script_utilities.py | 18 ++++++++++++++++++
2 files changed, 27 insertions(+), 5 deletions(-)
---
diff --git a/src/orca/scripts/toolkits/gtk/script.py b/src/orca/scripts/toolkits/gtk/script.py
index 4e92162..e7126e4 100644
--- a/src/orca/scripts/toolkits/gtk/script.py
+++ b/src/orca/scripts/toolkits/gtk/script.py
@@ -166,11 +166,9 @@ class Script(default.Script):
# Unfiled. When a canvas item gets focus but is not selected, we
# are only getting a focus event. This happens in Nautilus.
- if role == pyatspi.ROLE_CANVAS:
- topLevelObject = self.utilities.topLevelObject(event.source)
- if topLevelObject == orca_state.activeWindow:
- orca.setLocusOfFocus(event, event.source)
- return
+ if role == pyatspi.ROLE_CANVAS and not self.utilities.eventIsCanvasNoise(event):
+ orca.setLocusOfFocus(event, event.source)
+ return
# Unfiled, but yet another case of only getting a focus: event when
# a widget appears in a parent container and is already focused.
@@ -231,3 +229,9 @@ class Script(default.Script):
return
default.Script.onTextSelectionChanged(self, event)
+
+ def isActivatableEvent(self, event):
+ if self.utilities.eventIsCanvasNoise(event):
+ return False
+
+ return super().isActivatableEvent(event)
diff --git a/src/orca/scripts/toolkits/gtk/script_utilities.py
b/src/orca/scripts/toolkits/gtk/script_utilities.py
index e719b3c..aadd7dc 100644
--- a/src/orca/scripts/toolkits/gtk/script_utilities.py
+++ b/src/orca/scripts/toolkits/gtk/script_utilities.py
@@ -30,6 +30,7 @@ import re
import orca.debug as debug
import orca.script_utilities as script_utilities
+import orca.orca_state as orca_state
class Utilities(script_utilities.Utilities):
@@ -106,3 +107,20 @@ class Utilities(script_utilities.Utilities):
return False
return rv
+
+ def eventIsCanvasNoise(self, event):
+ if event.source.getRole() != pyatspi.ROLE_CANVAS:
+ return False
+
+ if not orca_state.activeWindow:
+ msg = 'INFO: No active window'
+ debug.println(debug.LEVEL_INFO, msg, True)
+ return False
+
+ topLevel = self.topLevelObject(event.source)
+ if not self.isSameObject(topLevel, orca_state.activeWindow):
+ msg = 'INFO: Event is believed to be canvas noise'
+ debug.println(debug.LEVEL_INFO, msg, True)
+ return True
+
+ return False
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]