-
Bug
-
Resolution: Fixed
-
P4
-
8u20
-
None
TreeTableView is not a common control, and as such accessibility support is difficult to implement without compromises. This Jira issue is therefore designed to track the work on improving accessibility support in TreeTableView.
A first observation is that it is quite tough to find examples on both Windows and Mac (suggestions appreciated!). One example that is interesting is in Mozilla Thunderbird when threaded conversations are enabled. On Windows, it represents the main mail table as a tree (UIA_TreeControlTypeId). The children of the tree are firstly a UIA_ListControlTypeId of the table headers, and then it is simply all _visible_ rows, regardless of their indentation. Each row is represented as a UIA_TreeItemControlTypeId. The children of these tree items are the individual cells in the row, represented as UIA_DataItemControlTypeId.
There are a number of interesting observations here:
1) This code flattens the tree structure - all tree items are on a single level regardless of their parent / children relationships.
2) Because they flatten the tree structure they can more easily return only the visible rows, rather than having to devirtualise like we had to do for TreeView.
3) When using Windows Narrator, it does not read the individual rows as being collapsed or expanded (it doesn't make sense given what this represents).
4) When using Windows Narrator, when a row is selected, it reads out the contents of all cells in the row.
Unfortunately, on Mac it appears that Mozilla Thunderbird does not implement any accessibility support, as the entire window is just represented as a AXStandardWindow, no matter where you look.
This approach therefore prioritises the table qualities of the TreeTableView over the tree qualities - to me this seems like a reasonable compromise. The only thing that is lost in this approach is the ability for a user to know whether a row is a leaf / expanded / collapsed, although there is no actual reason for this as this data could be recorded in the UIA_TreeItemControlTypeId for each row.
A first observation is that it is quite tough to find examples on both Windows and Mac (suggestions appreciated!). One example that is interesting is in Mozilla Thunderbird when threaded conversations are enabled. On Windows, it represents the main mail table as a tree (UIA_TreeControlTypeId). The children of the tree are firstly a UIA_ListControlTypeId of the table headers, and then it is simply all _visible_ rows, regardless of their indentation. Each row is represented as a UIA_TreeItemControlTypeId. The children of these tree items are the individual cells in the row, represented as UIA_DataItemControlTypeId.
There are a number of interesting observations here:
1) This code flattens the tree structure - all tree items are on a single level regardless of their parent / children relationships.
2) Because they flatten the tree structure they can more easily return only the visible rows, rather than having to devirtualise like we had to do for TreeView.
3) When using Windows Narrator, it does not read the individual rows as being collapsed or expanded (it doesn't make sense given what this represents).
4) When using Windows Narrator, when a row is selected, it reads out the contents of all cells in the row.
Unfortunately, on Mac it appears that Mozilla Thunderbird does not implement any accessibility support, as the entire window is just represented as a AXStandardWindow, no matter where you look.
This approach therefore prioritises the table qualities of the TreeTableView over the tree qualities - to me this seems like a reasonable compromise. The only thing that is lost in this approach is the ability for a user to know whether a row is a leaf / expanded / collapsed, although there is no actual reason for this as this data could be recorded in the UIA_TreeItemControlTypeId for each row.