[orca] Improve presentation of non-empty anchors
- From: Joanmarie Diggs <joanied src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [orca] Improve presentation of non-empty anchors
- Date: Thu, 26 Nov 2015 06:26:12 +0000 (UTC)
commit d8754a5a1f39d6e1f5a7da9263b3daafcb337f0f
Author: Joanmarie Diggs <jdiggs igalia com>
Date: Thu Nov 26 01:24:11 2015 -0500
Improve presentation of non-empty anchors
src/orca/scripts/web/braille_generator.py | 5 +++--
src/orca/scripts/web/script.py | 9 ++++++++-
src/orca/scripts/web/script_utilities.py | 10 +++++++---
src/orca/scripts/web/speech_generator.py | 6 +++++-
4 files changed, 23 insertions(+), 7 deletions(-)
---
diff --git a/src/orca/scripts/web/braille_generator.py b/src/orca/scripts/web/braille_generator.py
index 371b480..8d65925 100644
--- a/src/orca/scripts/web/braille_generator.py
+++ b/src/orca/scripts/web/braille_generator.py
@@ -83,7 +83,7 @@ class BrailleGenerator(braille_generator.BrailleGenerator):
level = self._script.utilities.headingLevel(obj)
result.append(object_properties.ROLE_HEADING_LEVEL_BRAILLE % level)
- elif role == pyatspi.ROLE_LINK and obj == orca_state.locusOfFocus:
+ elif self._script.utilities.isLink(obj) and obj == orca_state.locusOfFocus:
if obj.parent.getRole() == pyatspi.ROLE_IMAGE:
result.append(messages.IMAGE_MAP_LINK)
@@ -137,7 +137,8 @@ class BrailleGenerator(braille_generator.BrailleGenerator):
if self._script.utilities.isClickableElement(obj) \
or self._script.utilities.isLink(obj):
oldRole = self._overrideRole(pyatspi.ROLE_LINK, args)
- elif self._script.utilities.isStatic(obj):
+ elif self._script.utilities.isStatic(obj) \
+ or self._script.utilities.isAnchor(obj):
oldRole = self._overrideRole('ROLE_STATIC', args)
elif self._script.utilities.treatAsDiv(obj):
oldRole = self._overrideRole(pyatspi.ROLE_SECTION, args)
diff --git a/src/orca/scripts/web/script.py b/src/orca/scripts/web/script.py
index 2e4c371..958ea02 100644
--- a/src/orca/scripts/web/script.py
+++ b/src/orca/scripts/web/script.py
@@ -995,7 +995,14 @@ class Script(default.Script):
self.utilities.setCaretContext(newFocus, caretOffset)
self.updateBraille(newFocus)
- speech.speak(self.speechGenerator.generateSpeech(newFocus, priorObj=oldFocus))
+
+ if self.utilities.isAnchor(newFocus):
+ contents = self.utilities.getLineContentsAtOffset(newFocus, 0)
+ utterances = self.speechGenerator.generateContents(contents)
+ else:
+ utterances = self.speechGenerator.generateSpeech(newFocus, priorObj=oldFocus)
+
+ speech.speak(utterances)
self._saveFocusedObjectInfo(newFocus)
if self.utilities.inTopLevelWebApp(newFocus):
diff --git a/src/orca/scripts/web/script_utilities.py b/src/orca/scripts/web/script_utilities.py
index 4e9664d..0a986a5 100644
--- a/src/orca/scripts/web/script_utilities.py
+++ b/src/orca/scripts/web/script_utilities.py
@@ -2081,6 +2081,8 @@ class Utilities(script_utilities.Utilities):
and obj.parent.getRole() == pyatspi.ROLE_LINK \
and obj.name and obj.name == obj.parent.name:
rv = True
+ else:
+ rv = False
self._isLink[hash(obj)] = rv
return rv
@@ -2096,6 +2098,8 @@ class Utilities(script_utilities.Utilities):
role = obj.getRole()
if role == pyatspi.ROLE_TOOL_TIP:
rv = True
+ else:
+ rv = False
self._isNonNavigablePopup[hash(obj)] = rv
return rv
@@ -2614,7 +2618,7 @@ class Utilities(script_utilities.Utilities):
text = self.queryNonEmptyText(obj)
if not text:
- if self.isTextBlockElement(obj) or self.isAnchor(obj):
+ if self.isTextBlockElement(obj) or self.isEmptyAnchor(obj):
nextObj, nextOffset = self.nextContext(obj, offset)
if nextObj:
msg = "WEB: First caret context for %s, %i is %s, %i" % (obj, offset, nextObj,
nextOffset)
@@ -2658,7 +2662,7 @@ class Utilities(script_utilities.Utilities):
allText = text.getText(0, -1)
for i in range(offset + 1, len(allText)):
child = self.getChildAtOffset(obj, i)
- if child and not self.isZombie(child) and not self.isAnchor(child) \
+ if child and not self.isZombie(child) and not self.isEmptyAnchor(child) \
and not self.isUselessImage(child):
return self.findNextCaretInOrder(child, -1)
if allText[i] != self.EMBEDDED_OBJECT_CHARACTER:
@@ -2722,7 +2726,7 @@ class Utilities(script_utilities.Utilities):
offset = len(allText)
for i in range(offset - 1, -1, -1):
child = self.getChildAtOffset(obj, i)
- if child and not self.isZombie(child) and not self.isAnchor(child) \
+ if child and not self.isZombie(child) and not self.isEmptyAnchor(child) \
and not self.isUselessImage(child):
return self.findPreviousCaretInOrder(child, -1)
if allText[i] != self.EMBEDDED_OBJECT_CHARACTER:
diff --git a/src/orca/scripts/web/speech_generator.py b/src/orca/scripts/web/speech_generator.py
index 77a2f23..88d0593 100644
--- a/src/orca/scripts/web/speech_generator.py
+++ b/src/orca/scripts/web/speech_generator.py
@@ -256,6 +256,8 @@ class SpeechGenerator(speech_generator.SpeechGenerator):
if (start or end):
doNotSpeak.append(pyatspi.ROLE_DOCUMENT_FRAME)
doNotSpeak.append(pyatspi.ROLE_ALERT)
+ if self._script.utilities.isAnchor(obj):
+ doNotSpeak.append(obj.getRole())
if obj.getState().contains(pyatspi.STATE_EDITABLE):
lastKey, mods = self._script.utilities.lastKeyAndModifiers()
@@ -280,7 +282,7 @@ class SpeechGenerator(speech_generator.SpeechGenerator):
result.append(self.getLocalizedRoleName(obj, role))
result.extend(acss)
- elif role == pyatspi.ROLE_LINK:
+ elif self._script.utilities.isLink(obj):
if obj.parent.getRole() == pyatspi.ROLE_IMAGE:
result.append(messages.IMAGE_MAP_LINK)
result.extend(acss)
@@ -440,6 +442,8 @@ class SpeechGenerator(speech_generator.SpeechGenerator):
oldRole = self._overrideRole('default', args)
elif self._script.utilities.isLink(obj):
oldRole = self._overrideRole(pyatspi.ROLE_LINK, args)
+ elif self._script.utilities.isAnchor(obj):
+ oldRole = 'ROLE_STATIC'
elif self._script.utilities.treatAsDiv(obj):
oldRole = self._overrideRole(pyatspi.ROLE_SECTION, args)
else:
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]