Skip to content

feat(unix): implement AT-SPI Table and TableCell interfaces - #790

Closed
rit3sh-x wants to merge 1 commit into
AccessKit:mainfrom
rit3sh-x:feat/atspi-table-tablecell
Closed

feat(unix): implement AT-SPI Table and TableCell interfaces#790
rit3sh-x wants to merge 1 commit into
AccessKit:mainfrom
rit3sh-x:feat/atspi-table-tablecell

Conversation

@rit3sh-x

@rit3sh-x rit3sh-x commented Sep 4, 2026

Copy link
Copy Markdown

Summary

  • Implements org.a11y.atspi.Table and org.a11y.atspi.TableCell on the Unix (AT-SPI) adapter - the two interfaces accesskit_unix was missing for table/grid content.
  • Table geometry is derived live from Role::Row children, falling back to row_index/column_index for flat ARIA-grid-style tables that have no Row children.
  • All data already existed on accesskit::Node - this is AT-SPI glue, not new data modeling.
  • Fixes a design bug found via testing: row/column selection queries (IsRowSelected, GetSelectedColumns, ...) now only count Cell/GridCell children, excluding RowHeader/ColumnHeader. Apps commonly never call set_selected on header cells, so counting them would permanently block any headered table from ever reporting a selected row/column.

Test plan

  • cargo test (workspace default members)
  • cargo test -p accesskit_atspi_common (8 new unit tests covering interface gating, row/col counts, GetIndexAt/GetRowAtIndex/GetColumnAtIndex round-trip, headers/descriptions, selection queries, AddRowSelection action dispatch)
  • cargo test -p accesskit_unix (3 new tests exercising the D-Bus-facing TableInterface directly)
  • cargo clippy -p accesskit_atspi_common -p accesskit_unix --all-targets -- -D warnings
  • cargo fmt --check

@rit3sh-x

rit3sh-x commented Sep 4, 2026

Copy link
Copy Markdown
Author

@DataTriny could you review it?

@DataTriny

Copy link
Copy Markdown
Member

Hello @rit3sh-x,

Did you use an LLM to write all of this?

@rit3sh-x

rit3sh-x commented Sep 4, 2026

Copy link
Copy Markdown
Author

@DataTriny I did use it for writing some tests. Is there some AI Policy?

@rit3sh-x

rit3sh-x commented Sep 4, 2026

Copy link
Copy Markdown
Author

I was also working on the Image and HyperText APIs.

@DataTriny

Copy link
Copy Markdown
Member

@rit3sh-x I only reviewed a small portion of your changes, which is enough for me to conclude that you either used an LLM way more than you claim, or you didn't really understand what you were doing. I am not going to review the rest.

Quick note on the tui-a11y project you mention in the PR description: proper terminal emulators already emit their own accessibility tree with the content of the text buffer, any scroll bar, tabs... And they know when their window gains or loses focus. While the AT-SPI protocol doesn't enforce it, you must not create an accessibility tree if the application already emits one, this responsibility falls on who creates and manages the window. Your library is only going to confuse assistive technologies like Orca.

Please stop that.

Respectfully.

@DataTriny DataTriny closed this Sep 4, 2026
@rit3sh-x
rit3sh-x deleted the feat/atspi-table-tablecell branch September 4, 2026 22:06
@rit3sh-x

rit3sh-x commented Sep 4, 2026

Copy link
Copy Markdown
Author

Sorry if it felt like the code was fully LLM generated. I did use an LLM for some of the tests, but I worked through the implementation myself.

My main motivation for tui-a11y was accessibility for lower-level TUIs/CLIs, rather than advanced terminal emulators like Warp that already have their own accessibility tree.

I appreciate the feedback, and I'll try to make sure my code doesn't come across as AI-generated in the future.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants