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:
- Tabbing through a form which contains a table. The entire row is read before the form field.
- Do we want to get rid of this behaviour? I think it's annoying, but perhaps it should be kept.
- Moving up/down a column in an ARIA grid/treegrid; e.g. Firebug's Net panel. The entire row is read before the cell.
- Note that this doesn't occur in Firebug in Firefox 3.6 and later because the rows are exposed as tree view items instead of rows.
In both of these cases, cell coordinates are reported by the cell, so the row really should not be presented in the ancestry.
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:
- Don't ever present rows in the ancestry.
- This would break the Thunderbird example above.
- Special case Mozilla rows, making isPresentableFocusAncestor return False if the parent has an IAccessibleTable object.
- This works, but I feel like this shouldn't be specific to Mozilla. Or should it? After all, this name concatenation is unique to Mozilla at present.
- Add some extra code to the base isPresentableFocusAncestor for rows/columns which returns False if the row/column is not part of a real table (i.e. table property is None or not implemented).
- This seems like the most abstract solution.
- The table property must return the real table object for row/column objects if they have one. This already happens for Mozilla, so this is fine.
- The question is: again, should this actually be made specific to Gecko?
Note that I have implemented code for solutions 2 and 3, so it's just a matter of which we prefer, if any.
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:
In both of these cases, cell coordinates are reported by the cell, so the row really should not be presented in the ancestry.
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.