orca r3910 - in trunk: . src/orca src/orca/scripts/apps/Thunderbird src/orca/scripts/apps/evolution src/orca/scripts/apps/pidgin src/orca/scripts/apps/soffice src/orca/scripts/toolkits/Gecko



Author: joanied
Date: Tue May 20 20:40:55 2008
New Revision: 3910
URL: http://svn.gnome.org/viewvc/orca?rev=3910&view=rev

Log:
* src/orca/scripts/toolkits/Gecko/script.py:
  src/orca/scripts/apps/evolution/script.py:
  src/orca/scripts/apps/pidgin/where_am_i.py:
  src/orca/scripts/apps/pidgin/script.py:
  src/orca/scripts/apps/Thunderbird/script.py:
  src/orca/scripts/apps/soffice/speech_generator.py:
  src/orca/scripts/apps/soffice/where_am_i.py:
  src/orca/scripts/apps/soffice/braille_generator.py:
  src/orca/scripts/apps/soffice/script.py:
  src/orca/speechgenerator.py:
  src/orca/default.py:
  src/orca/liveregions.py:
  src/orca/where_am_I.py:
  src/orca/braillegenerator.py:
  Fix for bug #515665 - Orca has problems with tables that have
  captions in FF3.


Modified:
   trunk/ChangeLog
   trunk/src/orca/braillegenerator.py
   trunk/src/orca/default.py
   trunk/src/orca/liveregions.py
   trunk/src/orca/scripts/apps/Thunderbird/script.py
   trunk/src/orca/scripts/apps/evolution/script.py
   trunk/src/orca/scripts/apps/pidgin/script.py
   trunk/src/orca/scripts/apps/pidgin/where_am_i.py
   trunk/src/orca/scripts/apps/soffice/braille_generator.py
   trunk/src/orca/scripts/apps/soffice/script.py
   trunk/src/orca/scripts/apps/soffice/speech_generator.py
   trunk/src/orca/scripts/apps/soffice/where_am_i.py
   trunk/src/orca/scripts/toolkits/Gecko/script.py
   trunk/src/orca/speechgenerator.py
   trunk/src/orca/where_am_I.py

Modified: trunk/src/orca/braillegenerator.py
==============================================================================
--- trunk/src/orca/braillegenerator.py	(original)
+++ trunk/src/orca/braillegenerator.py	Tue May 20 20:40:55 2008
@@ -1254,7 +1254,8 @@
 
                     if label == None or len(label) == 0:
                         table = obj.parent.queryTable()
-                        n = table.getColumnAtIndex(obj.getIndexInParent())
+                        index = self._script.getCellIndex(obj)
+                        n = table.getColumnAtIndex(index)
                         accHeader = table.getColumnHeader(n)
                         regions[0].append(braille.Region(" "))
                         label = accHeader.name
@@ -1340,9 +1341,9 @@
             savedBrailleVerbosityLevel = settings.brailleVerbosityLevel
             settings.brailleVerbosityLevel = \
                                          settings.VERBOSITY_LEVEL_BRIEF
-
-            row = table.getRowAtIndex(obj.getIndexInParent())
-            column = table.getColumnAtIndex(obj.getIndexInParent())
+            index = self._script.getCellIndex(obj)
+            row = table.getRowAtIndex(index)
+            column = table.getColumnAtIndex(index)
 
             # This is an indication of whether we should speak all the
             # table cells (the user has moved focus up or down a row),
@@ -1687,7 +1688,8 @@
         except (NotImplementedError, AttributeError):
             table = None
         if parent and table:
-            row = table.getRowAtIndex(obj.getIndexInParent())
+            index = self._script.getCellIndex(obj)
+            row = table.getRowAtIndex(index)
             if (row >= 0) \
                 and (not obj.getRole() in [pyatspi.ROLE_ROW_HEADER,
                                            pyatspi.ROLE_TABLE_ROW_HEADER]):
@@ -1708,7 +1710,7 @@
                     text = desc
                 regions.append(braille.Region(text))
 
-            col = table.getColumnAtIndex(obj.getIndexInParent())
+            col = table.getColumnAtIndex(index)
             if (col >= 0) \
                 and (not obj.getRole() in [pyatspi.ROLE_COLUMN_HEADER,
                                            pyatspi.ROLE_TABLE_COLUMN_HEADER]):

Modified: trunk/src/orca/default.py
==============================================================================
--- trunk/src/orca/default.py	(original)
+++ trunk/src/orca/default.py	Tue May 20 20:40:55 2008
@@ -2688,10 +2688,9 @@
                     table = None
                 if table and \
                       oldLocusOfFocus.getRole() == pyatspi.ROLE_TABLE_CELL:
-                    oldRow = table.getRowAtIndex( \
-                                           oldLocusOfFocus.getIndexInParent())
-                    oldCol = table.getColumnAtIndex( \
-                                           oldLocusOfFocus.getIndexInParent())
+                    index = self.getCellIndex(oldLocusOfFocus)
+                    oldRow = table.getRowAtIndex(index)
+                    oldCol = table.getColumnAtIndex(index)
                 else:
                     oldRow = -1
                     oldCol = -1
@@ -2701,10 +2700,9 @@
                 except:
                     pass
                 else:
-                    newRow = table.getRowAtIndex( \
-                                  newLocusOfFocus.getIndexInParent())
-                    newCol = table.getColumnAtIndex( \
-                                  newLocusOfFocus.getIndexInParent())
+                    index = self.getCellIndex(newLocusOfFocus)
+                    newRow = table.getRowAtIndex(index)
+                    newCol = table.getColumnAtIndex(index)
 
                     if (newRow != oldRow) or (oldParent != newParent):
                         desc = table.getRowDescription(newRow)
@@ -2859,11 +2857,10 @@
                 except:
                     pass
                 else:
-                    column = table.getColumnAtIndex( \
-                                    newLocusOfFocus.getIndexInParent())
+                    index = self.getCellIndex(newLocusOfFocus)
+                    column = table.getColumnAtIndex(index)
                     self.pointOfReference['lastColumn'] = column
-                    row = table.getRowAtIndex( \
-                                    newLocusOfFocus.getIndexInParent())
+                    row = table.getRowAtIndex(index)
                     self.pointOfReference['lastRow'] = row
         else:
             orca_state.noFocusTimeStamp = time.time()
@@ -6142,6 +6139,16 @@
 
         return -1
 
+    def getCellIndex(self, obj):
+        """Returns the index of the cell which should be used with the
+        table interface.  This is necessary because in some apps we
+        cannot count on getIndexInParent() returning the index we need.
+
+        Arguments:
+        -obj: the table cell whose index we need.
+        """
+        return obj.getIndexInParent()
+
     def isWordDelimiter(self, character):
         """Returns True if the given character is a word delimiter.
 
@@ -6347,8 +6354,9 @@
                 return []
 
         nodes = []
-        row = table.getRowAtIndex(obj.getIndexInParent())
-        col = table.getColumnAtIndex(obj.getIndexInParent())
+        index = self.getCellIndex(obj)
+        row = table.getRowAtIndex(index)
+        col = table.getColumnAtIndex(index)
         nodeLevel = self.getNodeLevel(obj)
         done = False
 

Modified: trunk/src/orca/liveregions.py
==============================================================================
--- trunk/src/orca/liveregions.py	(original)
+++ trunk/src/orca/liveregions.py	Tue May 20 20:40:55 2008
@@ -485,7 +485,8 @@
                 # Note: getRowHeader() fails for most markup.  We will use the
                 # relation when the markup is good (when getRowHeader() works) 
                 # so we won't see this code in those cases.  
-                row = itable.getRowAtIndex(obj.getIndexInParent())
+                index = self._script.getCellIndex(obj)
+                row = itable.getRowAtIndex(index)
                 header = itable.getAccessibleAt(row, 0)
                 # expand the header
                 return [self._script.expandEOCs(header).strip()]

Modified: trunk/src/orca/scripts/apps/Thunderbird/script.py
==============================================================================
--- trunk/src/orca/scripts/apps/Thunderbird/script.py	(original)
+++ trunk/src/orca/scripts/apps/Thunderbird/script.py	Tue May 20 20:40:55 2008
@@ -98,7 +98,8 @@
         #
         if obj.getRole() == pyatspi.ROLE_TABLE_CELL:
             table = parent.queryTable()
-            row = table.getRowAtIndex(obj.getIndexInParent())
+            index = self.getCellIndex(obj)
+            row = table.getRowAtIndex(index)
             acc = table.getAccessibleAt(row, 0)
             orca.setLocusOfFocus(event, acc)
             consume = True

Modified: trunk/src/orca/scripts/apps/evolution/script.py
==============================================================================
--- trunk/src/orca/scripts/apps/evolution/script.py	(original)
+++ trunk/src/orca/scripts/apps/evolution/script.py	Tue May 20 20:40:55 2008
@@ -664,7 +664,8 @@
             parent = obj.parent
             if parent.getRole() == pyatspi.ROLE_TABLE:
                 parentTable = parent.queryTable()
-                row = parentTable.getRowAtIndex(obj.getIndexInParent())
+                index = self.getCellIndex(obj)
+                row = parentTable.getRowAtIndex(index)
                 utterances = []
                 regions = []
                 for i in range(0, parentTable.nColumns):
@@ -720,9 +721,9 @@
 
             parent = event.source.parent
             parentTable = parent.queryTable()
-            row = parentTable.getRowAtIndex(event.source.getIndexInParent())
-            column = \
-                parentTable.getColumnAtIndex(event.source.getIndexInParent())
+            index = self.getCellIndex(event.source)
+            row = parentTable.getRowAtIndex(index)
+            column = parentTable.getColumnAtIndex(index)
 
             # If we are on the same row, then just speak/braille the table
             # cell as if settings.readTableCellRow was False.
@@ -1502,10 +1503,10 @@
                    self.isDesiredFocusedItem(oldLocusOfFocus, rolesList):
                     parent = event.source.parent
                     parentTable = parent.queryTable()
-                    newRow = parentTable.getRowAtIndex( \
-                                  event.source.getIndexInParent())
-                    oldRow = parentTable.getRowAtIndex( \
-                                  oldLocusOfFocus.getIndexInParent())
+                    newIndex = self.getCellIndex(event.source)
+                    newRow = parentTable.getRowAtIndex(newIndex)
+                    oldIndex = self.getCellIndex(oldLocusOfFocus)
+                    oldRow = parentTable.getRowAtIndex(oldIndex)
                     nRows = parentTable.nRows
                     if (newRow != oldRow) and (oldRow != nRows):
                         return

Modified: trunk/src/orca/scripts/apps/pidgin/script.py
==============================================================================
--- trunk/src/orca/scripts/apps/pidgin/script.py	(original)
+++ trunk/src/orca/scripts/apps/pidgin/script.py	Tue May 20 20:40:55 2008
@@ -902,8 +902,9 @@
                 return []
 
         nodes = []        
-        row = table.getRowAtIndex(obj.getIndexInParent())
-        col = table.getColumnAtIndex(obj.getIndexInParent() + 1)
+        index = self.getCellIndex(obj)
+        row = table.getRowAtIndex(index)
+        col = table.getColumnAtIndex(index + 1)
         nodeLevel = self.getNodeLevel(obj)
         done = False
 

Modified: trunk/src/orca/scripts/apps/pidgin/where_am_i.py
==============================================================================
--- trunk/src/orca/scripts/apps/pidgin/where_am_i.py	(original)
+++ trunk/src/orca/scripts/apps/pidgin/where_am_i.py	Tue May 20 20:40:55 2008
@@ -93,8 +93,8 @@
         utterances = []
         if doubleClick:
             table = parent.queryTable()
-            row = table.getRowAtIndex(
-              orca_state.locusOfFocus.getIndexInParent())
+            index = self._script.getCellIndex(orca_state.locusOfFocus)
+            row = table.getRowAtIndex(index)
             # Translators: this in reference to a row in a table.
             #
             text = _("row %d of %d") % ((row+1), table.nRows)
@@ -120,9 +120,8 @@
                               "??? parent=%s" % parent.getRoleName())
                 return
             else:
-                row = \
-                    table.getRowAtIndex(
-                       orca_state.locusOfFocus.getIndexInParent())
+                index = self._script.getCellIndex(orca_state.locusOfFocus)
+                row = table.getRowAtIndex(index)
                 # Translators: this in reference to a row in a table.
                 #
                 text = _("row %d of %d") % ((row+1), table.nRows)

Modified: trunk/src/orca/scripts/apps/soffice/braille_generator.py
==============================================================================
--- trunk/src/orca/scripts/apps/soffice/braille_generator.py	(original)
+++ trunk/src/orca/scripts/apps/soffice/braille_generator.py	Tue May 20 20:40:55 2008
@@ -69,9 +69,10 @@
         except NotImplementedError:
             parentTable = None
 
+        index = self._script.getCellIndex(obj)
         if self._script.pointOfReference.has_key("lastColumn") and \
               self._script.pointOfReference["lastColumn"] != \
-              parentTable.getColumnAtIndex(obj.getIndexInParent()):
+              parentTable.getColumnAtIndex(index):
             if self._script.dynamicColumnHeaders.has_key(table):
                 row = self._script.dynamicColumnHeaders[table]
                 header = self._script.getDynamicRowHeaderCell(obj, row)
@@ -92,7 +93,7 @@
 
         if self._script.pointOfReference.has_key("lastRow") and \
               self._script.pointOfReference['lastRow'] != \
-              parentTable.getRowAtIndex(obj.getIndexInParent()):
+              parentTable.getRowAtIndex(index):
             if self._script.dynamicRowHeaders.has_key(table):
                 column = self._script.dynamicRowHeaders[table]
                 header = self._script.getDynamicColumnHeaderCell(obj, column)
@@ -124,8 +125,9 @@
                                              settings.VERBOSITY_LEVEL_BRIEF
 
                 parent = obj.parent
-                row = parentTable.getRowAtIndex(obj.getIndexInParent())
-                column = parentTable.getColumnAtIndex(obj.getIndexInParent())
+                index = self._script.getCellIndex(obj)
+                row = parentTable.getRowAtIndex(index)
+                column = parentTable.getColumnAtIndex(index)
 
                 # This is an indication of whether we should speak all the
                 # table cells (the user has moved focus up or down a row),

Modified: trunk/src/orca/scripts/apps/soffice/script.py
==============================================================================
--- trunk/src/orca/scripts/apps/soffice/script.py	(original)
+++ trunk/src/orca/scripts/apps/soffice/script.py	Tue May 20 20:40:55 2008
@@ -394,7 +394,8 @@
             parentTable = None
 
         if parent and parentTable:
-            row = parentTable.getRowAtIndex(obj.getIndexInParent())
+            index = self.getCellIndex(obj)
+            row = parentTable.getRowAtIndex(index)
             accCell = parentTable.getAccessibleAt(row, column)
 
         return accCell
@@ -420,7 +421,8 @@
             parentTable = None
 
         if parent and parentTable:
-            column = parentTable.getColumnAtIndex(obj.getIndexInParent())
+            index = self.getCellIndex(obj)
+            column = parentTable.getColumnAtIndex(index)
             accCell = parentTable.getAccessibleAt(row, column)
 
         return accCell
@@ -482,14 +484,16 @@
                 parent.queryComponent().getAccessibleAtPoint(leftX, y, 0)
             if leftCell:
                 table = leftCell.parent.queryTable()
-                startIndex = table.getColumnAtIndex(leftCell.getIndexInParent())
+                index = self.getCellIndex(leftCell)
+                startIndex = table.getColumnAtIndex(index)
 
             rightX = extents.x + extents.width - 1
             rightCell = \
                 parent.queryComponent().getAccessibleAtPoint(rightX, y, 0)
             if rightCell:
                 table = rightCell.parent.queryTable()
-                endIndex = table.getColumnAtIndex(rightCell.getIndexInParent())
+                index = self.getCellIndex(rightCell)
+                endIndex = table.getColumnAtIndex(index)
 
         return [startIndex, endIndex]
 
@@ -725,7 +729,8 @@
                 parentTable = None
 
             if parent and parentTable:
-                row = parentTable.getRowAtIndex(cell.getIndexInParent())
+                index = self.getCellIndex(cell)
+                row = parentTable.getRowAtIndex(index)
 
         return row
 
@@ -749,7 +754,8 @@
                 parentTable = None
 
             if parent and parentTable:
-                column = parentTable.getColumnAtIndex(cell.getIndexInParent())
+                index = self.getCellIndex(cell)
+                column = parentTable.getColumnAtIndex(index)
 
         return column
 
@@ -1428,11 +1434,10 @@
                 except:
                     pass
                 else:
-                    column = table.getColumnAtIndex( \
-                                    newLocusOfFocus.getIndexInParent())
+                    index = self.getCellIndex(newLocusOfFocus)
+                    column = table.getColumnAtIndex(index)
                     self.pointOfReference['lastColumn'] = column
-                    row = table.getRowAtIndex( \
-                                    newLocusOfFocus.getIndexInParent())
+                    row = table.getRowAtIndex(index)
                     self.pointOfReference['lastRow'] = row
                 return
 

Modified: trunk/src/orca/scripts/apps/soffice/speech_generator.py
==============================================================================
--- trunk/src/orca/scripts/apps/soffice/speech_generator.py	(original)
+++ trunk/src/orca/scripts/apps/soffice/speech_generator.py	Tue May 20 20:40:55 2008
@@ -147,9 +147,10 @@
             except NotImplementedError:
                 parentTable = None
 
+            index = self._script.getCellIndex(obj)
             if self._script.pointOfReference.has_key("lastColumn") and \
                self._script.pointOfReference["lastColumn"] != \
-               parentTable.getColumnAtIndex(obj.getIndexInParent()):
+               parentTable.getColumnAtIndex(index):
                 if self._script.dynamicColumnHeaders.has_key(table):
                     row = self._script.dynamicColumnHeaders[table]
                     header = self._script.getDynamicRowHeaderCell(obj, row)
@@ -170,7 +171,7 @@
 
             if self._script.pointOfReference.has_key("lastRow") and \
                self._script.pointOfReference["lastRow"] != \
-               parentTable.getRowAtIndex(obj.getIndexInParent()):
+               parentTable.getRowAtIndex(index):
                 if self._script.dynamicRowHeaders.has_key(table):
                     column = self._script.dynamicRowHeaders[table]
                     header = self._script.getDynamicColumnHeaderCell(obj,
@@ -194,9 +195,9 @@
             if not already_focused:
                 if settings.readTableCellRow:
                     parent = obj.parent
-                    row = parentTable.getRowAtIndex(obj.getIndexInParent())
-                    column = \
-                        parentTable.getColumnAtIndex(obj.getIndexInParent())
+                    index = self._script.getCellIndex(obj)
+                    row = parentTable.getRowAtIndex(index)
+                    column = parentTable.getColumnAtIndex(index)
 
                     # This is an indication of whether we should speak all the
                     # table cells (the user has moved focus up or down a row),

Modified: trunk/src/orca/scripts/apps/soffice/where_am_i.py
==============================================================================
--- trunk/src/orca/scripts/apps/soffice/where_am_i.py	(original)
+++ trunk/src/orca/scripts/apps/soffice/where_am_i.py	Tue May 20 20:40:55 2008
@@ -69,8 +69,8 @@
         # Translators: this represents the column we're
         # on in a table.
         #
-        text = _("column %d") % \
-               (table.getColumnAtIndex(obj.getIndexInParent()) + 1)
+        index = self._script.getCellIndex(obj)
+        text = _("column %d") % (table.getColumnAtIndex(index) + 1)
         utterances.append(text)
 
         # Speak the dynamic column header (if any).
@@ -95,7 +95,8 @@
 
         # Translators: this represents the row number of a table.
         #
-        text = _("row %d") % (table.getRowAtIndex(obj.getIndexInParent()) + 1)
+        index = self._script.getCellIndex(obj)
+        text = _("row %d") % (table.getRowAtIndex(index) + 1)
         utterances.append(text)
 
         # Speak the dynamic row header (if any).

Modified: trunk/src/orca/scripts/toolkits/Gecko/script.py
==============================================================================
--- trunk/src/orca/scripts/toolkits/Gecko/script.py	(original)
+++ trunk/src/orca/scripts/toolkits/Gecko/script.py	Tue May 20 20:40:55 2008
@@ -3182,7 +3182,7 @@
                         contents += "\n"
                     elif obj.getRole() == pyatspi.ROLE_TABLE_CELL:
                         parent = obj.parent
-                        index = obj.getIndexInParent()
+                        index = self.getCellIndex(obj)
                         if parent.queryTable().getColumnAtIndex(index) != 0:
                             contents += " "
                     elif obj.getRole() == pyatspi.ROLE_LINK:
@@ -3767,11 +3767,35 @@
 
         return None
 
+    def getCellIndex(self, obj):
+        """Returns the index of the cell which should be used with the
+        table interface.  This is necessary because we cannot count on
+        the index we need being the same as the index in the parent.
+        See, for example, tables with captions and tables with rows
+        that have attributes."""
+
+        index = -1
+        parent = self.getAncestor(obj,
+                                 [pyatspi.ROLE_TABLE],
+                                 [pyatspi.ROLE_DOCUMENT_FRAME])
+        try:
+            table = parent.queryTable()
+        except:
+            pass
+        else:
+            attrs = dict([attr.split(':', 1) for attr in obj.getAttributes()])
+            index = attrs.get('table-cell-index')
+            if index:
+                index = int(index)
+            else:
+                index = obj.getIndexInParent()
+
+        return index
+
     def getCellCoordinates(self, obj):
         """Returns the [row, col] of a ROLE_TABLE_CELL or [0, 0]
         if the coordinates cannot be found.
         """
-
         if obj.getRole() != pyatspi.ROLE_TABLE_CELL:
             obj = self.getAncestor(obj,
                                    [pyatspi.ROLE_TABLE_CELL],
@@ -3783,8 +3807,9 @@
         except:
             pass
         else:
-            row = table.getRowAtIndex(obj.getIndexInParent())
-            col = table.getColumnAtIndex(obj.getIndexInParent())
+            index = self.getCellIndex(obj)
+            row = table.getRowAtIndex(index)
+            col = table.getColumnAtIndex(index)
             return [row, col]
 
         return [0, 0]
@@ -3799,14 +3824,19 @@
         - coordinates2: [row, col]
         """
 
+        if coordinates1 == coordinates2:
+            return True
+
         try:
             table = obj.queryTable()
         except:
             pass
         else:
-            index1 = table.getIndexAt(coordinates1[0], coordinates1[1])
-            index2 = table.getIndexAt(coordinates2[0], coordinates2[1])
-            return (index1 == index2)
+            cell1 = table.getAccessibleAt(coordinates1[0], 
+                                          coordinates1[1])
+            cell2 = table.getAccessibleAt(coordinates2[0],
+                                          coordinates2[1])
+            return self.isSameObject(cell1, cell2)
 
         return False
 
@@ -3872,12 +3902,20 @@
         """
 
         if obj and obj.getRole() == pyatspi.ROLE_TABLE_CELL:
-            table = obj.parent.queryTable()
-            row = table.getRowAtIndex(obj.getIndexInParent())
-            for col in xrange(table.nColumns):
-                cell = table.getAccessibleAt(row, col)
-                if not self.isHeader(cell):
-                    return False
+            parent = self.getAncestor(obj,
+                                      [pyatspi.ROLE_TABLE],
+                                      [pyatspi.ROLE_DOCUMENT_FRAME])
+            try:
+                table = parent.queryTable()
+            except:
+                return False
+            else:
+                index = self.getCellIndex(obj)
+                row = table.getRowAtIndex(index)
+                for col in xrange(table.nColumns):
+                    cell = table.getAccessibleAt(row, col)
+                    if not self.isHeader(cell):
+                        return False
 
         return True
 
@@ -3890,12 +3928,20 @@
         """
 
         if obj and obj.getRole() == pyatspi.ROLE_TABLE_CELL:
-            table = obj.parent.queryTable()
-            col = table.getColumnAtIndex(obj.getIndexInParent())
-            for row in xrange(table.nRows):
-                cell = table.getAccessibleAt(row, col)
-                if not self.isHeader(cell):
-                    return False
+            parent = self.getAncestor(obj,
+                                      [pyatspi.ROLE_TABLE],
+                                      [pyatspi.ROLE_DOCUMENT_FRAME])
+            try:
+                table = parent.queryTable()
+            except:
+                return False
+            else:
+                index = self.getCellIndex(obj)
+                col = table.getColumnAtIndex(index)
+                for row in xrange(table.nRows):
+                    cell = table.getAccessibleAt(row, col)
+                    if not self.isHeader(cell):
+                        return False
 
         return True
 

Modified: trunk/src/orca/speechgenerator.py
==============================================================================
--- trunk/src/orca/speechgenerator.py	(original)
+++ trunk/src/orca/speechgenerator.py	Tue May 20 20:40:55 2008
@@ -1456,8 +1456,9 @@
             if settings.readTableCellRow and parent_table \
                 and (not self._script.isLayoutOnly(obj.parent)):
                 parent = obj.parent
-                row = parent_table.getRowAtIndex(obj.getIndexInParent())
-                column = parent_table.getColumnAtIndex(obj.getIndexInParent())
+                index = self._script.getCellIndex(obj)
+                row = parent_table.getRowAtIndex(index)
+                column = parent_table.getColumnAtIndex(index)
 
                 # This is an indication of whether we should speak all the
                 # table cells (the user has moved focus up or down a row),

Modified: trunk/src/orca/where_am_I.py
==============================================================================
--- trunk/src/orca/where_am_I.py	(original)
+++ trunk/src/orca/where_am_I.py	Tue May 20 20:40:55 2008
@@ -545,13 +545,14 @@
             nColumns = 0
         else:
             nColumns = table.nColumns
-            column = table.getColumnAtIndex(obj.getIndexInParent())
+            index = self._script.getCellIndex(obj)
+            column = table.getColumnAtIndex(index)
             header = table.getColumnHeader(column)
             if header:
                 text = self._getObjName(header)
                 utterances.append(text)
 
-            row = table.getRowAtIndex(obj.getIndexInParent())
+            row = table.getRowAtIndex(index)
             header = table.getRowHeader(row)
             if header:
                 text = self._getObjName(header)
@@ -1189,8 +1190,8 @@
             debug.println(self._debugLevel, "??? parent=%s" % parent.getRole())
             return []
         else:
-            row = table.getRowAtIndex(obj.getIndexInParent())
-
+            index = self._script.getCellIndex(obj)
+            row = table.getRowAtIndex(index)
             for i in range(0, table.nColumns):
                 acc = table.getAccessibleAt(row, i)
                 utterances.append(self._getTableCell(acc))



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]