[orca] Rework findFirstCaretContext()
- From: Joanmarie Diggs <joanied src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [orca] Rework findFirstCaretContext()
- Date: Fri, 15 Nov 2013 01:56:40 +0000 (UTC)
commit 255faa448b5a5de0226a8041552daa5ee30e750f
Author: Joanmarie Diggs <jdiggs igalia com>
Date: Thu Nov 14 17:27:01 2013 -0500
Rework findFirstCaretContext()
src/orca/scripts/toolkits/Gecko/script.py | 75 ++++++++++++++---------------
1 files changed, 37 insertions(+), 38 deletions(-)
---
diff --git a/src/orca/scripts/toolkits/Gecko/script.py b/src/orca/scripts/toolkits/Gecko/script.py
index b7c2ffb..360e5a0 100644
--- a/src/orca/scripts/toolkits/Gecko/script.py
+++ b/src/orca/scripts/toolkits/Gecko/script.py
@@ -2728,53 +2728,52 @@ class Script(default.Script):
Arguments:
-obj: an accessible object
-characterOffset: the offset of the character where to start
- looking for real rext
+ looking for real text
Returns [obj, characterOffset] that points to real content.
"""
- text = self.utilities.queryNonEmptyText(obj)
- if text:
- unicodeText = self.utilities.unicodeText(obj)
- if characterOffset >= len(unicodeText):
- if not self.utilities.isEntry(obj):
- return [obj, -1]
- else:
- # We're at the end of an entry. If we return -1,
- # and then set the caretContext accordingly,
- # findNextCaretInOrder() will think we're at the
- # beginning and we'll never escape this entry.
- #
- return [obj, characterOffset]
-
- character = text.getText(characterOffset, characterOffset + 1)
- if character == self.EMBEDDED_OBJECT_CHARACTER:
- if obj.childCount <= 0:
- return self.findFirstCaretContext(obj, characterOffset + 1)
- try:
- childIndex = self.getChildIndex(obj, characterOffset)
-
- # Handle bogus empty paragraphs.
- child = obj[childIndex]
- if child.getRole() == pyatspi.ROLE_PARAGRAPH \
- and not self.utilities.queryNonEmptyText(child):
- return self.findFirstCaretContext(obj, characterOffset + 1)
+ try:
+ role = obj.getRole()
+ except:
+ return [None, -1]
- return self.findFirstCaretContext(child, 0)
- except:
- return [obj, -1]
- else:
- return [obj, characterOffset]
- elif obj.getRole() == pyatspi.ROLE_TABLE:
- if obj[0] and obj[0].getRole() in [pyatspi.ROLE_CAPTION,
- pyatspi.ROLE_LIST]:
- obj = obj[0]
+ if role == pyatspi.ROLE_TABLE and obj.childCount:
+ child = obj[0]
+ if child.getRole() in [pyatspi.ROLE_CAPTION, pyatspi.ROLE_LIST]:
+ obj = child
else:
obj = obj.queryTable().getAccessibleAt(0, 0)
return self.findFirstCaretContext(obj, 0)
- else:
+
+ text = self.utilities.queryNonEmptyText(obj)
+ if not text:
+ return [obj, -1]
+
+ if role == pyatspi.ROLE_LIST_ITEM and not characterOffset and obj.name:
+ words = obj.name.split()
+ characterOffset = len(words[0])
+
+ character = text.getText(characterOffset, characterOffset + 1)
+ if character != self.EMBEDDED_OBJECT_CHARACTER:
+ return [obj, characterOffset]
+
+ try:
+ childIndex = self.getChildIndex(obj, characterOffset)
+ child = obj[childIndex]
+
+ # Handle bogus empty paragraphs. Bug 677615.
+ if child.getRole() == pyatspi.ROLE_PARAGRAPH \
+ and not self.utilities.queryNonEmptyText(child):
+ return self.findFirstCaretContext(obj, characterOffset + 1)
+
+ return self.findFirstCaretContext(child, 0)
+
+ except:
return [obj, -1]
+ return [obj, characterOffset]
+
def findNextCaretInOrder(self, obj=None,
startOffset=-1,
includeNonText=True):
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]