orca r3870 - in branches/gnome-2-22: . src/orca
- From: joanied svn gnome org
- To: svn-commits-list gnome org
- Subject: orca r3870 - in branches/gnome-2-22: . src/orca
- Date: Wed, 30 Apr 2008 20:33:51 +0100 (BST)
Author: joanied
Date: Wed Apr 30 19:33:50 2008
New Revision: 3870
URL: http://svn.gnome.org/viewvc/orca?rev=3870&view=rev
Log:
* src/orca/Gecko.py:
src/orca/where_am_I.py:
Fix for bug #517736 - whereAmI does not handle text with
embedded object characters
Modified:
branches/gnome-2-22/ChangeLog
branches/gnome-2-22/src/orca/Gecko.py
branches/gnome-2-22/src/orca/where_am_I.py
Modified: branches/gnome-2-22/src/orca/Gecko.py
==============================================================================
--- branches/gnome-2-22/src/orca/Gecko.py (original)
+++ branches/gnome-2-22/src/orca/Gecko.py Wed Apr 30 19:33:50 2008
@@ -1439,6 +1439,36 @@
else:
self._iterativePageSummary(obj)
+ def _speakText(self, obj, basicOnly):
+ """Speaks the line if the current line contains embedded object
+ characters; otherwise calls the parent class.
+ """
+
+ line = self._script.currentLineContents
+ if not self._script.inDocumentContent(obj) \
+ or not line or len(line) == 1:
+ return where_am_I.WhereAmI._speakText(self, obj, basicOnly)
+
+ cell = self._script.getAncestor(obj,
+ [pyatspi.ROLE_TABLE_CELL],
+ [pyatspi.ROLE_DOCUMENT_FRAME])
+ if cell:
+ return self._speakTableCell(cell, basicOnly)
+
+ utterances = []
+ text = self._getObjLabel(obj)
+ utterances.append(text)
+
+ if obj.getRole() == pyatspi.ROLE_LINK:
+ text = rolenames.getSpeechForRoleName(obj.parent)
+ else:
+ text = rolenames.getSpeechForRoleName(obj)
+
+ utterances.append(text)
+
+ speech.speakUtterances(utterances)
+ self._script.speakContents(line)
+
def _speakDefaultButton(self, obj):
"""Speaks the default button in a dialog.
@@ -1994,7 +2024,7 @@
# getLineContentsAtOffset() twice.
#
self._previousLineContents = None
- self._currentLineContents = None
+ self.currentLineContents = None
self._nextLineContents = None
# Last focused frame. We are only interested in frame focused events
@@ -4492,22 +4522,22 @@
- offset: the character offset within obj
"""
- index = self.findObjectOnLine(obj, offset, self._currentLineContents)
+ index = self.findObjectOnLine(obj, offset, self.currentLineContents)
if index < 0:
index = self.findObjectOnLine(obj,
offset,
self._previousLineContents)
if index >= 0:
- self._nextLineContents = self._currentLineContents
- self._currentLineContents = self._previousLineContents
+ self._nextLineContents = self.currentLineContents
+ self.currentLineContents = self._previousLineContents
self._previousLineContents = None
else:
index = self.findObjectOnLine(obj,
offset,
self._nextLineContents)
if index >= 0:
- self._previousLineContents = self._currentLineContents
- self._currentLineContents = self._nextLineContents
+ self._previousLineContents = self.currentLineContents
+ self.currentLineContents = self._nextLineContents
self._nextLineContents = None
else:
self._destroyLineCache()
@@ -4516,7 +4546,7 @@
"""Removes all of the stored lines."""
self._previousLineContents = None
- self._currentLineContents = None
+ self.currentLineContents = None
self._nextLineContents = None
def presentLine(self, obj, offset):
@@ -4527,12 +4557,12 @@
- offset: the offset within obj
"""
- contents = self._currentLineContents
+ contents = self.currentLineContents
index = self.findObjectOnLine(obj, offset, contents)
if index < 0:
- self._currentLineContents = self.getLineContentsAtOffset(obj,
+ self.currentLineContents = self.getLineContentsAtOffset(obj,
offset)
- self.speakContents(self._currentLineContents)
+ self.speakContents(self.currentLineContents)
self.updateBraille(obj)
def updateBraille(self, obj, extraRegion=None):
@@ -4577,14 +4607,14 @@
lineContentsOffset = max(0, focusedCharacterOffset - 1)
needToRefresh = True
- contents = self._currentLineContents
+ contents = self.currentLineContents
index = self.findObjectOnLine(focusedObj,
max(0, lineContentsOffset),
contents)
if index < 0 or needToRefresh:
contents = self.getLineContentsAtOffset(focusedObj,
max(0, lineContentsOffset))
- self._currentLineContents = contents
+ self.currentLineContents = contents
if not len(contents):
return
@@ -6276,7 +6306,7 @@
extents = obj.queryComponent().getExtents(0)
objExtents = [extents.x, extents.y, extents.width, extents.height]
- lineContents = self._currentLineContents
+ lineContents = self.currentLineContents
ourIndex = self.findObjectOnLine(obj, 0, lineContents)
if ourIndex < 0:
lineContents = self.getLineContentsAtOffset(obj, 0)
@@ -6421,7 +6451,7 @@
objExtents = \
[extents.x, extents.y, extents.width, extents.height]
- index = self.findObjectOnLine(obj, 0, self._currentLineContents)
+ index = self.findObjectOnLine(obj, 0, self.currentLineContents)
if index > 0 and self._previousLineContents:
prevLineContents = self._previousLineContents
prevObj = prevLineContents[0][0]
@@ -8460,7 +8490,7 @@
if not obj:
return self.getTopOfFile()
- currentLine = self._currentLineContents
+ currentLine = self.currentLineContents
index = self.findObjectOnLine(obj, characterOffset, currentLine)
if index < 0:
currentLine = self.getLineContentsAtOffset(obj, characterOffset)
@@ -8525,8 +8555,8 @@
break
if updateCache:
- self._nextLineContents = self._currentLineContents
- self._currentLineContents = prevLine
+ self._nextLineContents = self.currentLineContents
+ self.currentLineContents = prevLine
return [prevObj, prevOffset]
@@ -8664,7 +8694,7 @@
if not obj:
return self.getBottomOfFile()
- currentLine = self._currentLineContents
+ currentLine = self.currentLineContents
index = self.findObjectOnLine(obj, characterOffset, currentLine)
if index < 0:
currentLine = self.getLineContentsAtOffset(obj, characterOffset)
@@ -8729,8 +8759,8 @@
break
if updateCache:
- self._previousLineContents = self._currentLineContents
- self._currentLineContents = nextLine
+ self._previousLineContents = self.currentLineContents
+ self.currentLineContents = nextLine
return [nextObj, nextOffset]
@@ -9262,14 +9292,14 @@
if obj and obj.getState().contains(pyatspi.STATE_SELECTABLE):
obj = obj.parent.parent
characterOffset = self.getCharacterOffsetInParent(obj)
- self._currentLineContents = None
+ self.currentLineContents = None
characterOffset = max(0, characterOffset)
[prevObj, prevOffset] = [obj, characterOffset]
found = False
mayHaveGoneTooFar = False
- line = self._currentLineContents \
+ line = self.currentLineContents \
or self.getLineContentsAtOffset(obj, characterOffset)
startingPoint = line
useful = self.getMeaningfulObjectsFromLine(line)
@@ -9308,11 +9338,11 @@
if not found:
self._nextLineContents = line
prevLine = self.findPreviousLine(line[0][0], line[0][1])
- line = self._currentLineContents
+ line = self.currentLineContents
useful = self.getMeaningfulObjectsFromLine(line)
prevObj = useful[-1][0]
prevOffset = useful[-1][1]
- if self._currentLineContents == self._nextLineContents:
+ if self.currentLineContents == self._nextLineContents:
break
if not found:
@@ -9337,7 +9367,7 @@
prevOffset = useful[index][1]
if found:
- self._currentLineContents = line
+ self.currentLineContents = line
self.setCaretPosition(prevObj, prevOffset)
self.updateBraille(prevObj)
objectContents = self.getObjectContentsAtOffset(prevObj,
@@ -9355,13 +9385,13 @@
if obj and obj.getState().contains(pyatspi.STATE_SELECTABLE):
obj = obj.parent.parent
characterOffset = self.getCharacterOffsetInParent(obj)
- self._currentLineContents = None
+ self.currentLineContents = None
characterOffset = max(0, characterOffset)
[nextObj, nextOffset] = [obj, characterOffset]
found = False
- line = self._currentLineContents \
+ line = self.currentLineContents \
or self.getLineContentsAtOffset(obj, characterOffset)
while line and not found:
@@ -9379,8 +9409,8 @@
self._previousLineContents = line
[nextObj, nextOffset] = self.findNextLine(line[-1][0],
line[-1][2])
- line = self._currentLineContents
- if self._currentLineContents == self._previousLineContents:
+ line = self.currentLineContents
+ if self.currentLineContents == self._previousLineContents:
break
if not found:
@@ -9400,7 +9430,7 @@
found = not (nextObj is None)
if found:
- self._currentLineContents = line
+ self.currentLineContents = line
self.setCaretPosition(nextObj, nextOffset)
self.updateBraille(nextObj)
objectContents = self.getObjectContentsAtOffset(nextObj,
Modified: branches/gnome-2-22/src/orca/where_am_I.py
==============================================================================
--- branches/gnome-2-22/src/orca/where_am_I.py (original)
+++ branches/gnome-2-22/src/orca/where_am_I.py Wed Apr 30 19:33:50 2008
@@ -127,7 +127,10 @@
elif role == pyatspi.ROLE_LIST_ITEM:
self._speakListItem(obj, basicOnly)
- elif role == pyatspi.ROLE_PARAGRAPH:
+ elif role in [pyatspi.ROLE_PARAGRAPH,
+ pyatspi.ROLE_SECTION,
+ pyatspi.ROLE_HEADING,
+ pyatspi.ROLE_DOCUMENT_FRAME]:
self._speakParagraph(obj, basicOnly)
elif role == pyatspi.ROLE_ICON:
@@ -745,8 +748,9 @@
if link_uri:
link_uri_info = urlparse.urlparse(link_uri)
else:
- # something is wrong, just return
- return
+ # It might be an anchor. Try to speak the text.
+ #
+ return self._speakText(obj, basicOnly)
# Try to get the URI of the active document and parse it
doc_uri = self._script.getDocumentFrameURI()
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]