Skip to content

Treat more syslistview32 controls as multi select#18926

Merged
seanbudd merged 5 commits into
nvaccess:masterfrom
LeonarddeR:fixMultiSelect2
Sep 18, 2025
Merged

Treat more syslistview32 controls as multi select#18926
seanbudd merged 5 commits into
nvaccess:masterfrom
LeonarddeR:fixMultiSelect2

Conversation

@LeonarddeR

Copy link
Copy Markdown
Collaborator

Link to issue number:

Fixes #18918 

Summary of the issue:

NVDA doesn't recognize certain SysListView32 controls as multi select.

Description of user facing changes:

MP3 tag list view and other list views are now correctly recognized as multi select.

Description of developer facing changes:

None

Description of development approach:

SysListView32 turn out to be multiselect by default unless LVS_SINGLESEL is set. Accounted for that in code.

Testing strategy:

Tested the STR for MP3 tag

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 September 15, 2025 05:53
@LeonarddeR LeonarddeR requested review from Copilot and seanbudd and removed request for Copilot September 15, 2025 05:53
Comment on lines 69 to 72
LVS_REPORT = 0x0001
LVS_TYPEMASK = 0x0003
LVS_SINGLESEL = 0x0004
LVS_OWNERDRAWFIXED = 0x0400

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.

Could you make this a FlagEnum or IntFlagEnum?

Copilot AI review requested due to automatic review settings September 15, 2025 10:32

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull Request Overview

This PR updates the sysListView32 control handling to correctly recognize multi-select capabilities by checking for the absence of the LVS_SINGLESEL style flag rather than relying on default assumptions.

  • Migrates hardcoded constants to a proper ListViewWindowStyle IntFlag enum for better type safety
  • Implements proper multi-select detection logic in the _get_states method
  • Updates all references to use the new enum instead of module-level constants

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Comment thread source/NVDAObjects/IAccessible/sysListView32.py
@LeonarddeR LeonarddeR requested a review from Copilot September 15, 2025 10:43

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull Request Overview

Copilot reviewed 1 out of 1 changed files in this pull request and generated 1 comment.


Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Comment thread source/NVDAObjects/IAccessible/sysListView32.py

@seanbudd seanbudd left a comment

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.

Thanks @LeonarddeR - can you add a change log entry for the deprecated items?
Approved, otherwise

Comment thread user_docs/en/changes.md Outdated
@seanbudd seanbudd merged commit 32f645c into nvaccess:master Sep 18, 2025
6 checks passed
@github-actions github-actions Bot added this to the 2026.1 milestone Sep 18, 2025
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.

NVDA doesn't see some lists as multi-select now that 18365 has been implemented.

3 participants