Skip to content

UIA handler: add WinUI 3 top-level pane window class name (Microsoft.UI.Content.DesktopChildSiteBridge) to good UIA window class names to enable mouse and touch access #17904

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Apr 6, 2025

Conversation

josephsl
Copy link
Collaborator

@josephsl josephsl commented Apr 5, 2025

Link to issue number:

Closes #17771
Partly closes #17407

Summary of the issue:

Mouse and touch interaction does not work in WinUI 3 apps such as Microsoft Copilot and parts of Windows 11 File Explorer interface.

Description of user facing changes

Mouse and touch interaction can be used in WinUI 3 apps.

Description of development approach

Added Microsoft.UI.Content.DesktopChildSiteBridge to good UIA window class names. An alternative approach is done through Mouse Enhancement add-on where NVDA will confess that WinUI 3 app elements are good UIA windows when the mentioned top-level pane window class is present.

Testing strategy:

Manual: in Windows 11, observe that one can use mouse to move through File Explorer's quick access interface.

Known issues with pull request:

This partly resolves #17407 because it does not include WinUI 2 window class name. As @codeofdusk noted in #17407, a UIA bridge would be a better solution - that is, let NVDA see that windows claiming to be IAccessible are in fact UIA when dealing with WinUI app interfaces.

Code Review Checklist:

  • Documentation:
    • Change log entry
    • User Documentation
    • Developer / Technical Documentation
    • Context sensitive help for GUI changes
  • Testing:
    • Unit tests
    • System (end to end) tests
    • Manual testing
  • UX of all users considered:
    • Speech
    • Braille
    • Low Vision
    • Different web browsers
    • Localization in other languages / culture than English
  • API is compatible with existing add-ons.
  • Security precautions taken.

@coderabbitai summary

josephsl added 2 commits April 5, 2025 07:05
…ntent.DesktopChildSiteBridge) to good UIA window class names. Re nvaccess#17771, nvaccess#17407.

Add WinUI 3 top-level window class name to good UIA window class names so mouse and touchscreen access can work in apps such as WinUI 3 versions of Microsoft Copilot and parts of Windows 11 File Explorer/quick access interface.
@josephsl josephsl requested a review from a team as a code owner April 5, 2025 13:15
@josephsl josephsl requested a review from seanbudd April 5, 2025 13:15
@josephsl
Copy link
Collaborator Author

josephsl commented Apr 5, 2025

CC @hwf1324

@hwf1324
Copy link
Contributor

hwf1324 commented Apr 5, 2025

Thanks a lot @josephsl for fixing this in core, I'll try to test it.

Copy link
Member

@seanbudd seanbudd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @josephsl

@seanbudd seanbudd merged commit 235d1f7 into nvaccess:master Apr 6, 2025
5 checks passed
@github-actions github-actions bot added this to the 2025.2 milestone Apr 6, 2025
@josephsl josephsl deleted the winUIGoodUIAWindowClassNames branch April 7, 2025 02:01
nvdaes pushed a commit to nvdaes/nvda that referenced this pull request Apr 10, 2025
…ssNames

Closes nvaccess#17771
Partly closes nvaccess#17407

Summary of the issue:
Mouse and touch interaction does not work in WinUI 3 apps such as Microsoft Copilot and parts of Windows 11 File Explorer interface.

Description of user facing changes
Mouse and touch interaction can be used in WinUI 3 apps.

Description of development approach
Added Microsoft.UI.Content.DesktopChildSiteBridge to good UIA window class names. An alternative approach is done through Mouse Enhancement add-on where NVDA will confess that WinUI 3 app elements are good UIA windows when the mentioned top-level pane window class is present.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
3 participants