[orca] Avoid navigating into tooltip-like popups in web apps
- From: Joanmarie Diggs <joanied src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [orca] Avoid navigating into tooltip-like popups in web apps
- Date: Sun, 31 May 2015 19:30:22 +0000 (UTC)
commit d95d590dcd337b60098ac9b38ca7c633c82fca30
Author: Joanmarie Diggs <jdiggs igalia com>
Date: Sun May 31 15:27:56 2015 -0400
Avoid navigating into tooltip-like popups in web apps
.../scripts/toolkits/Gecko/script_utilities.py | 26 ++++++++++++++++---
1 files changed, 22 insertions(+), 4 deletions(-)
---
diff --git a/src/orca/scripts/toolkits/Gecko/script_utilities.py
b/src/orca/scripts/toolkits/Gecko/script_utilities.py
index 54d9462..9f18394 100644
--- a/src/orca/scripts/toolkits/Gecko/script_utilities.py
+++ b/src/orca/scripts/toolkits/Gecko/script_utilities.py
@@ -63,6 +63,7 @@ class Utilities(script_utilities.Utilities):
self._isLandmark = {}
self._isLiveRegion = {}
self._isLink = {}
+ self._isNonNavigablePopup = {}
self._isNonEntryTextWidget = {}
self._inferredLabels = {}
self._text = {}
@@ -94,6 +95,7 @@ class Utilities(script_utilities.Utilities):
self._isLandmark = {}
self._isLiveRegion = {}
self._isLink = {}
+ self._isNonNavigablePopup = {}
self._isNonEntryTextWidget = {}
self._inferredLabels = {}
self._cleanupContexts()
@@ -1480,6 +1482,21 @@ class Utilities(script_utilities.Utilities):
self._isLink[hash(obj)] = rv
return rv
+ def isNonNavigablePopup(self, obj):
+ if not (obj and self.inDocumentContent(obj)):
+ return False
+
+ rv = self._isNonNavigablePopup.get(hash(obj))
+ if rv is not None:
+ return rv
+
+ role = obj.getRole()
+ if role == pyatspi.ROLE_TOOL_TIP:
+ rv = True
+
+ self._isNonNavigablePopup[hash(obj)] = rv
+ return rv
+
def hasLongDesc(self, obj):
if not (obj and self.inDocumentContent(obj)):
return False
@@ -1686,6 +1703,7 @@ class Utilities(script_utilities.Utilities):
pyatspi.ROLE_PUSH_BUTTON,
pyatspi.ROLE_TOGGLE_BUTTON,
pyatspi.ROLE_TOOL_BAR,
+ pyatspi.ROLE_TOOL_TIP,
pyatspi.ROLE_TREE,
pyatspi.ROLE_TREE_TABLE]
return obj.getRole() in doNotDescend
@@ -1806,13 +1824,13 @@ class Utilities(script_utilities.Utilities):
if not obj or not self.inDocumentContent(obj):
return None, -1
- if not (self.isHidden(obj) or self.isOffScreenLabel(obj)):
+ if not (self.isHidden(obj) or self.isOffScreenLabel(obj) or self.isNonNavigablePopup(obj)):
text = self.queryNonEmptyText(obj)
if text:
allText = text.getText(0, -1)
for i in range(offset + 1, len(allText)):
child = self.getChildAtOffset(obj, i)
- if child:
+ if child and not self.isZombie(child):
return self.findNextCaretInOrder(child, -1)
if allText[i] != self.EMBEDDED_OBJECT_CHARACTER:
return obj, i
@@ -1845,7 +1863,7 @@ class Utilities(script_utilities.Utilities):
if not obj or not self.inDocumentContent(obj):
return None, -1
- if not (self.isHidden(obj) or self.isOffScreenLabel(obj)):
+ if not (self.isHidden(obj) or self.isOffScreenLabel(obj) or self.isNonNavigablePopup(obj)):
text = self.queryNonEmptyText(obj)
if text:
allText = text.getText(0, -1)
@@ -1853,7 +1871,7 @@ class Utilities(script_utilities.Utilities):
offset = len(allText)
for i in range(offset - 1, -1, -1):
child = self.getChildAtOffset(obj, i)
- if child:
+ if child and not self.isZombie(child):
return self.findPreviousCaretInOrder(child, -1)
if allText[i] != self.EMBEDDED_OBJECT_CHARACTER:
return obj, i
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]