Skip to content

[pull] main from w-ahmad:main#33

Merged
pull[bot] merged 7 commits into
mavaddat:mainfrom
w-ahmad:main
Jul 5, 2026
Merged

[pull] main from w-ahmad:main#33
pull[bot] merged 7 commits into
mavaddat:mainfrom
w-ahmad:main

Conversation

@pull

@pull pull Bot commented Jul 5, 2026

Copy link
Copy Markdown

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

w-ahmad and others added 7 commits June 30, 2026 03:17
Add comprehensive AutomationPeer classes for all TableView controls:
- TableViewAutomationPeer: IGridProvider + ITableProvider (row/column count,
  GetItem, GetColumnHeaders, RowOrColumnMajor)
- TableViewRowAutomationPeer: IExpandCollapseProvider for row details pane
- TableViewCellAutomationPeer: IGridItemProvider + ITableItemProvider +
  ISelectionItemProvider with meaningful automation name
  ('{column}, Row {n}, {value}' format)
- TableViewColumnHeaderAutomationPeer: IInvokeProvider to cycle sort direction;
  name includes sort state and filter state
- TableViewRowHeaderAutomationPeer: structural header peer

Wire OnCreateAutomationPeer in all five controls. Add supporting internal
helpers InvokeSortCycle() (TableViewColumnHeader) and ShowDetailPane()
(TableViewRowPresenter). Add 'Filtered' localised string in all nine language
resource files.

Add ~30 UITestMethod tests in TableViewAutomationPeerTests.cs covering control
types, class names, pattern support, automation name resolution, sort/filter
state in names, and OnCreateAutomationPeer wiring.

Add docs/docs/accessibility.md documenting supported UIA patterns, keyboard
navigation, screen-reader behaviour, custom name guidance, and limitations.
Update docs/docs/toc.yml to include the new page.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
When Escape cancels cell editing, WinUI moves keyboard focus to the
next focusable sibling the moment the editing element (e.g. TextBox)
is removed from the visual tree.  Screen readers follow focus, so
Narrator announced the next cell rather than the current (cancelled) one.

Fix: explicitly move focus from the editing element to the cell itself
*before* EndCellEditing tears it down.  Once the cell holds focus, the
TextBox removal is a no-op from the focus manager's perspective and
Narrator stays on the correct cell.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
- Resolve toc.yml merge conflict: add Accessibility entry under the
  new grouped Reference section from the PR #391 docs overhaul
- Rewrite accessibility.md to match the Microsoft Learn / how-to style
  used by all new docs: xref links, 'When to use it', XAML/C# examples
  with tv: namespace prefix, 'Notes and limitations', 'Related articles'
- Replace tvs: with tv: namespace prefix throughout
- Add IValueProvider-on-edit-element note and Escape focus behaviour note
  (matching the fix made in the previous commit)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
CanSort is a private computed property on TableViewColumnHeader, not a
public API. Point the xref to the public TableViewColumn.CanSort property
instead to resolve the UidNotFound build warning.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
AutomationPeer correctness:
- IGridItemProvider.Row now returns -1 (not 0) when cell has no row
- IGridItemProvider.Column now returns -1 (not 0) when cell has no column
- GetNameCore builds name from non-empty parts only (no spurious commas);
  skips cell value for TableViewTemplateColumn to avoid exposing the data
  item's ToString() as the accessible value
- GetHelpTextCore (cell peer) now uses TableViewLocalizedStrings for sort
  and filter state instead of hard-coded English strings
- GetRowHeaderItems returns the realized TableViewRowHeader provider
- GetRowHeaders (table peer) returns providers for all realized row headers
- Added internal TableViewRowPresenter.RowHeader property to expose _rowHeader
- Added internal TableView.Rows property to expose _rows

Localization:
- Translate 'Filtered' string in all 8 non-English locale .resw files:
  de-DE: Gefiltert, es-ES: Filtrado, ja-JP: フィルター済み,
  pt-BR: Filtrado, ru-RU: Отфильтровано, sk-SK: Filtrované,
  zh-CN: 已筛选, zh-TW: 已篩選

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
feat: add UI Automation / accessibility support
@pull pull Bot locked and limited conversation to collaborators Jul 5, 2026
@pull pull Bot added the ⤵️ pull label Jul 5, 2026
@pull pull Bot merged commit b632f54 into mavaddat:main Jul 5, 2026
@pull pull Bot had a problem deploying to github-pages July 5, 2026 17:04 Failure
@pull pull Bot had a problem deploying to ci-nuget-publish July 5, 2026 17:04 Failure
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant