https://bugs.documentfoundation.org/show_bug.cgi?id=150683

Michael Weghorn <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|[email protected] |[email protected]
                   |desktop.org                 |
             Status|UNCONFIRMED                 |ASSIGNED
     Ever confirmed|0                           |1

--- Comment #2 from Michael Weghorn <[email protected]> ---
>From what I have seen so far, the problem is an integer overflow. The index
currently used for a11y children/cells is sal_Int32 (i.e. 32 bit), but with 16k
column support, Calc has more cells than that.

Potential way forward that I'm currently looking into:

1) switch to use of 64-bit child/cell index internally
   * platform a11y APIs still use 32-bit indices, nothing we can change
   * but that can be used to avoid overflows internally and thus also make the
table cell interfaces implementations work (currently implemented for qt6,
winaccessibility)
2) in screen readers, avoid running into the issue of too large child/cell
indices by querying the row/column from the table cell interface
(IAccessibleTableCell for IAccessible2, AT-SPI TableCell for Linux), not the
table interface
   * from what I have seen so far, NVDA already seems to do that, orca doesn't
3) implement support for the AT-SPI TableCell interface for the gtk3 VCL plugin

That should hopefully *mostly* fix the problem. What's still problematic are
cell selections including more than 2^31 cells, since the index into the
selection is also limited to 32 bit in the platform a11y APIs and I currently
don't see any way than using that for the screen readers to retrieve the first
and last cell in the selection.

For the case that whole rows/columns are selected, Orca already seems to apply
a different handling (maybe querying the selected rows/columns from the Table
interface), so that also works fine (e.g. Orca says "All cells selected",
"Columns ... to ... selected".

As a side note, UIA has specific methods in the ISelectionProvider2 interface
that allow retrieving the first and last selected item,
ISelectionProvider2::get_FirstSelectedItem and
ISelectionProvider2::get_LastSelectedItem, but we currently don't support UIA
on Windows.

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to