Pete Brunet, Aaron Leventhal, Mike Squillace, Itoh-san (Takashi Itoh), Larry Weiss, Andres Gonzalez, Barry Feigenbaum, Steve Lee
Structuring of tables - row objects as intermediate children (table, rows, cells)
The prior idea of having the following three methods return DISP_E_MEMBERNOTFOUND was rejected. Rather the concept of a child index should be changed to be a cell index which is not necessarily related to IA2::indexInParent. Since the IDL is currently frozen this will be handled in documentation.
HRESULT childIndex ([in] long rowIndex,[in] long columnIndex,[out, retval] long *childIndex)
HRESULT columnIndex ([in] long childIndex,[out, retval] long *columnIndex)
HRESULT rowIndex ([in] long childIndex,[out, retval] long *rowIndex)
Larry: If the table manages its children and generates an active decendant changed event with a child ID, the AT can determine the row by using that ID on the calls to rowIndex/columnIndex.
Larry: If instead focus events are fired from the cells, there needs to be another way to get the row and column indexes. This could be done using IA2::uniqueID. The table can map uniqueIDs to row/column indexes.
Pete (added after the call): Another possible option is that the AT senses a ROW object, uses indexInParent (CELL in ROW) as the column index, and uses indexInParent on the ROW object (ROW in TABLE) to get the row index.
AT-SPI uses a double for the parameters. IA2 uses a VARIANT. It would be helpful for multi-platform app developers (like FF) to use doubles for both Win and Linux, i.e. IA2 should be documented to indicate that the VARIANT should always be a double. There are two use cases related to conveying end user usable text related to the corresponding doubles that IAValue would return:
If there is a related string for any controller positions return it via get_accValue (MSAA convention). (On Linux use accessible name to provide an end user value and if the control is labeled use the labelledBy relation. Problem: The practice on Linux seems to be to use accessible name for label text.)
If there is a related text area that changes (like the slider on the Privacy tab of Internet Options) use a controllerFor relation.
Larry: For case 1 on Linux use acc name for the label but update the label as the slider moves, e.g. Color - Blue
Aaron: Let's deal with Linux's labelled slider problem later when we are doing the ARIA work.
Aaron has indicated that there is already a means in FF2 for fetching single relations via new nav constants for MSAA's accNavigate. If that is still acceptable we can stay with the current IA2 IDL. There is no performance issue in non-browsers so those apps don't need a means to fetch single relations.
The consensus was that using accNavigate with the new nav constants is acceptable.