Reported by jteh on 2009-11-27 04:13
In real Mozilla tables in Firefox 3.6 and later, the parent of table cells is a row object. This row's name is a concatenation of the text content from all child cells. The reason for this is that in ARIA grids/treegrids, the row itself can gain focus and the entire row should be reported in that case. Unfortunately, this causes redundant information to be reported by NVDA when the row is a focus ancestor, as in the following examples:
Unfortunately, there are also cases where rows are used outside of real tables; e.g. the recipient address fields in Thunderbird's message composer. In this case, we do want the row to be presented because it includes position information which won't be reported by the cells (because they aren't real table cells).
There are three possible solutions:
Note that I have implemented code for solutions 2 and 3, so it's just a matter of which we prefer, if any.
Comment 1 by jteh on 2009-11-27 04:14
Mick, thoughts appreciated.
Comment 2 by mdcurran on 2009-11-27 06:29
I like option 3: don't speak row in focusAncestors if its table has IAccessibleTable. Though of course it still depends on how these tree grids are handling their focus. Is it common for them to set focus to the row, or the first cell in the row?
Comment 3 by jteh on 2009-11-27 06:33
Note that we won't check for IAccessibleTable in option 3. We just use the table property to fetch the table NVDAObject if there is one. For real tables, their row should return the correct table NVDAObject. Using IAccessibleTable is less generic. This is the major difference between options 2 and 3.
Grids/treegrids can set focus to both rows and cells. When they set focus to a row, they expect the whole row to be spoken. This will still work, as we don't use isPresentableFocusAncestor for the focus itself.
Comment 4 by mdcurran on 2009-11-27 06:35
Sorry, my bad, I do mean option 3: more abstract than option 2. Or perhaps you might want to say: we'll only present a row in focus ancestors if it doesn't have table info, but it does have position info. Then that still filters out pointless presentation rows that may exist.
Comment 5 by jteh on 2009-11-27 08:05
Committed in r3391.