[orca] Handle issues associated with using Gecko apps with Gtk+ 3
- From: Joanmarie Diggs <joanied src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [orca] Handle issues associated with using Gecko apps with Gtk+ 3
- Date: Thu, 23 Feb 2017 10:07:19 +0000 (UTC)
commit c31e95289b673cfea1e838e921a7f562be3bce3d
Author: Joanmarie Diggs <jdiggs igalia com>
Date: Thu Feb 23 05:05:37 2017 -0500
Handle issues associated with using Gecko apps with Gtk+ 3
src/orca/script_manager.py | 9 +++++++-
src/orca/script_utilities.py | 3 ++
src/orca/scripts/toolkits/gtk/script.py | 13 ++++++++++++
src/orca/scripts/toolkits/gtk/script_utilities.py | 22 +++++++++++++++++++++
4 files changed, 46 insertions(+), 1 deletions(-)
---
diff --git a/src/orca/script_manager.py b/src/orca/script_manager.py
index 27ca455..9d6b6ba 100644
--- a/src/orca/script_manager.py
+++ b/src/orca/script_manager.py
@@ -272,9 +272,16 @@ class ScriptManager:
if customScript:
return customScript
+ try:
+ role = obj.getRole()
+ except:
+ forceAppScript = False
+ else:
+ forceAppScript = role == pyatspi.ROLE_FRAME
+
# Only defer to the toolkit script for this object if the app script
# is based on a different toolkit.
- if toolkitScript \
+ if toolkitScript and not forceAppScript \
and not issubclass(appScript.__class__, toolkitScript.__class__):
return toolkitScript
diff --git a/src/orca/script_utilities.py b/src/orca/script_utilities.py
index cea4db9..1d9fe7d 100644
--- a/src/orca/script_utilities.py
+++ b/src/orca/script_utilities.py
@@ -3455,6 +3455,9 @@ class Utilities:
return not state.contains(pyatspi.STATE_MODAL)
+ def isUselessPanel(self, obj):
+ return False
+
def rgbFromString(self, attributeValue):
regex = re.compile("rgb|[^\w,]", re.IGNORECASE)
string = re.sub(regex, "", attributeValue)
diff --git a/src/orca/scripts/toolkits/gtk/script.py b/src/orca/scripts/toolkits/gtk/script.py
index 106b7f2..2a94c67 100644
--- a/src/orca/scripts/toolkits/gtk/script.py
+++ b/src/orca/scripts/toolkits/gtk/script.py
@@ -199,6 +199,16 @@ class Script(default.Script):
orca.setLocusOfFocus(event, obj)
return
+ def onFocusedChanged(self, event):
+ """Callback for object:state-changed:focused accessibility events."""
+
+ if self.utilities.isUselessPanel(event.source):
+ msg = "GTK: Event source believed to be useless panel"
+ debug.println(debug.LEVEL_INFO, msg, True)
+ return
+
+ super().onFocusedChanged(event)
+
def onSelectedChanged(self, event):
"""Callback for object:state-changed:selected accessibility events."""
@@ -270,4 +280,7 @@ class Script(default.Script):
if self.utilities.eventIsCanvasNoise(event):
return False
+ if self.utilities.isUselessPanel(event.source):
+ 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 930817f..f46653f 100644
--- a/src/orca/scripts/toolkits/gtk/script_utilities.py
+++ b/src/orca/scripts/toolkits/gtk/script_utilities.py
@@ -39,11 +39,13 @@ class Utilities(script_utilities.Utilities):
self._isComboBoxWithToggleDescendant = {}
self._isToggleDescendantOfComboBox = {}
self._isTypeahead = {}
+ self._isUselessPanel = {}
def clearCachedObjects(self):
self._isComboBoxWithToggleDescendant = {}
self._isToggleDescendantOfComboBox = {}
self._isTypeahead = {}
+ self._isUselessPanel = {}
def displayedText(self, obj):
displayedText = script_utilities.Utilities.displayedText(self, obj)
@@ -160,6 +162,26 @@ class Utilities(script_utilities.Utilities):
return False
+ def isUselessPanel(self, obj):
+ if not (obj and obj.getRole() == pyatspi.ROLE_PANEL):
+ return False
+
+ rv = self._isUselessPanel.get(hash(obj))
+ if rv is not None:
+ return rv
+
+ try:
+ name = obj.name
+ childCount = obj.childCount
+ supportsText = "Text" in pyatspi.listInterfaces(obj)
+ except:
+ rv = True
+ else:
+ rv = not (name or childCount or supportsText)
+
+ self._isUselessPanel[hash(obj)] = rv
+ return rv
+
def rgbFromString(self, attributeValue):
regex = re.compile("rgb|[^\w,]", re.IGNORECASE)
string = re.sub(regex, "", attributeValue)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]