Skip to content

Use UIA for syslistview32 controls backed by Windows Forms#15799

Merged
seanbudd merged 9 commits into
nvaccess:masterfrom
LeonarddeR:revert-15542-addSysListView32
Nov 22, 2023
Merged

Use UIA for syslistview32 controls backed by Windows Forms#15799
seanbudd merged 9 commits into
nvaccess:masterfrom
LeonarddeR:revert-15542-addSysListView32

Conversation

@LeonarddeR

Copy link
Copy Markdown
Collaborator

Link to issue number:

Fixes #15283

Summary of the issue:

In Windows Forms applications, errors occur in list view controls.

Description of user facing changes

Win forms project in #15283 now works as expected for the most part.

Description of development approach

Rather than the previous approach where we removed the listing of SysListView32 from the list of bad UIA class names, this adds a specific utility function to checks for a Framework Id of WinForm. If that's the case, we use UIA for SysListView32, as it seems these implementations are mature enough.

Testing strategy:

Tested with the win forms project in #15283

Known issues with pull request:

None

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.

@LeonarddeR LeonarddeR requested a review from a team as a code owner November 17, 2023 17:28
@LeonarddeR

Copy link
Copy Markdown
Collaborator Author

@beqabeqa473 Could you have a test of this?

@beqabeqa473

Copy link
Copy Markdown
Contributor

Sure, i will test it in several hours.

Thanks.

@beqabeqa473

Copy link
Copy Markdown
Contributor

@LeonarddeR thanks, everything works as expected.

Comment thread source/UIAHandler/__init__.py Outdated
# We need to rely on UIA for these controls, as otherwise parent/child navigation is broken.
# For other instances however, even when the control advertises a native UIA implementation,
# the implementation is likely to be incomplete and MSAA should be prefered.
return utils._isFrameworkIdWinForm(hwnd)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I would like to see some logging either in or around this call, especially because it fetches a UIA element in order to check. Logging to say that it is going to check, and also logging the answer, as this is what then causes NvDA to decide if the window is native or not. See other examples of logging in this function.

Comment thread source/UIAHandler/utils.py Outdated
Co-authored-by: Łukasz Golonka <lukasz.golonka@mailbox.org>
@seanbudd seanbudd added the conceptApproved Similar 'triaged' for issues, PR accepted in theory, implementation needs review. label Nov 21, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

conceptApproved Similar 'triaged' for issues, PR accepted in theory, implementation needs review.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

dotnet 7, winforms, _get_columnCount is not implemented

6 participants