Here's an updated proposal for IAccessibleTable2:

1) Remove childIndex

2) Rename nSelectedChildren to nSelectedCells

3) Rename/redefinition of selectedChildren to use a reference to an
accessible instead of a cell index and to remove the unused max [in]
parameter.  See notes c, d, and e below.

HRESULT selectedCells (
  [out, size_is( , *nSelectedCells , )] IUnknown ***pppAccessible,
  [out, retval] long *nSelectedCells
  )

4) Redefinition of columnIndex to use a reference to an accessible
instead of a cell index:

HRESULT columnIndex (
  [in] IUnknown *pAccessible,
  [out, retval] long *columnIndex
  )

5) Redefinition of rowIndex to use a reference to an accessible instead
of a cell index:

HRESULT rowIndex (
  [in] IUnknown *pAccessible,
  [out, retval] long *rowIndex
  )

6) Redefinition of rowColumnExtentsAtIndex to use a reference to an
accessible instead of a cell index.

HRESULT rowColumnExtentsAtIndex (
  [in] IUnknown *pAccessible,
  [out] long *row,
  [out] long *column,
  [out] long *rowExtents,
  [out] long *columnExtents,
  [out, retval] boolean *isSelected
  )

7) Redefinition of columnExtentAt to use a reference to an accessible
instead of row and column.  Also see note b below.

HRESULT columnExtentAt (
  [in] IUnknown *pAccessible,
  [out, retval] long *nColumnsSpanned
  )

8) Redefinition of rowExtentAt to use a reference to an accessible
instead of row and column.  Also see note b below.

HRESULT rowExtentAt (
  [in] IUnknown *pAccessible,
  [out, retval] long *nRowsSpanned
  )

9) Redefinition of isSelected to use a reference to an accessible
instead of row and column.  Also see note b below.

HRESULT isSelected (
  [in] IUnknown *pAccessible,
  [out, retval] boolean *isSelected)

10) Add new means of getting row headers.  Also see notes b, d, and e below.

HRESULT rowHeaderCells(
  [in] IUnknown *pAccessible,
  [out, size_is( , *nRowHeaderCells , )] IUnknown ***pppAccessible,
  [out, retval] long * nRowHeaderCells
  )

11) Add new means of getting column headers.  Also see notes b, d, and e
below.

HRESULT columnHeaderCells(
  [in] IUnknown *pAccessible,
  [out, size_is( , *nColumnHeaderCells , )] IUnknown ***pppAccessible,
  [out, retval] long * nColumnHeaderCells
  )

12) Fix the array definition of selectedColumns to remove the unused max
[in] parameter.  See notes c and e below.

HRESULT selectedColumns (
  [out, size_is( , *nColumns)] long **ppColumnIndex,
  [out, retval] long *nColumns
  )

13) Fix the array definition of selectedRows to remove the unused max
[in] parameter.  See notes c and e below.

HRESULT selectedRows (
  [out, size_is( , *nRows)] long **ppRowIndex,
  [out, retval] long *nRows
  )

14) Add the following note regarding the behavior of selectRow,
unselectRow, selectColumn, and unselectColumn.  Also see note g.

a) For selectRow:  When selecting a row and one of the cells in the row
spans multiple rows, all the rows that are spanned by the spanning cell
will be included in the selection.  All other rows will be unselected.
b) A similar note will be added to unselectRow, selectColumn, and
unselectColumn.

Notes:

a) accessibleAt was not renamed.

b) accessibleAt can be used to provide an accessible if the AT's GUI
only provides row and column indexes.

c) Removed the unused max [in] parameter from selectedCells,
selectedColumns, and selectedRows.  I'll have to update the comment at:
http://accessibility.freestandards.org/a11yspecs/ia2/docs/html/_generalinfo.html#_arrayConsideration

d) The prior notation was **long and is now IUnknown ***pppAccessible,
i.e. the pointer to an array of longs has been replaced by a pointer to
an array of *IUnknowns. 

e) This size_is notation specifies a pointer to an array of pointers. 
The second pointer in the series of pointers can be incremented a finite
number of times, as specified by the second value in the list, to access
the pointers held in the array.  For more information see the fifth and
seventh examples at:
http://msdn.microsoft.com/en-us/library/aa367164%28VS.85%29.aspx  or
this Microsoft System Journal article by Don Box:
http://www.microsoft.com/msj/1196/activex1196.aspx

f) Pending discussion of whether the old rowHeader and columnHeader
should be removed.  These are the methods that return a table instead of
an array of cells.

g) Pending the following discussion:  This behavior is modeled on that
of Excel.  The behavior needs to be specified for the case, such as
Firefox, where there is no GUI.  In the case where there is GUI behavior
and the GUI behavior is different than Excel (and the IA2 spec), e.g. MS
Word, OOo, and Symphony, should the behavior be allow to divert from the
specification to match that of the GUI?

-- 
*Pete Brunet*
                                                               
a11ysoft - Accessibility Architecture and Development
(512) 238-6967
pete @ a11ysoft.com
http://www.a11ysoft.com/about/
http://www.linkedin.com/in/petebrunet
Ionosphere: WS4G

_______________________________________________
Accessibility-ia2 mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/accessibility-ia2

Reply via email to