Skip to content

Report multi select on list boxes that support it#18409

Merged
seanbudd merged 4 commits into
nvaccess:masterfrom
LeonarddeR:multiSelect
Aug 15, 2025
Merged

Report multi select on list boxes that support it#18409
seanbudd merged 4 commits into
nvaccess:masterfrom
LeonarddeR:multiSelect

Conversation

@LeonarddeR

@LeonarddeR LeonarddeR commented Jul 3, 2025

Copy link
Copy Markdown
Collaborator

Link to issue number:

Closes #18365

Summary of the issue:

NVDA does not report whether multiple selection is supported on a list control.

Description of user facing changes:

NVDA now reports multi select for a list that supports multiple selection.

Description of developer facing changes:

None

Description of development approach:

  1. Add a new MULTISELECTABLE state, analogous to oleacc
  2. Map that state to the oleacc state for MSAA
  3. Map the UIA Selection Can Select Multiple property to the new state.

Testing strategy:

  • In firefox, a select box with <select multiple="true">
  • A list box in accevent.exe from the Windows SDK
  • Desktop list view
  • List view in Windows Explorer

Known issues with pull request:

I think that announcing this by default is overly verbose. It might make sense to add an option in object presentation category.

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

@LeonarddeR

Copy link
Copy Markdown
Collaborator Author

Blocked by #18410

@LeonarddeR LeonarddeR added blocked/needs-product-decision A product decision needs to be made. Decisions about NVDA UX or supported use-cases. blocked/needs-internal-fix labels Jul 3, 2025
@SaschaCowley SaschaCowley added conceptApproved Similar 'triaged' for issues, PR accepted in theory, implementation needs review. and removed blocked/needs-product-decision A product decision needs to be made. Decisions about NVDA UX or supported use-cases. labels Jul 15, 2025
@seanbudd

seanbudd commented Aug 8, 2025

Copy link
Copy Markdown
Member

@LeonarddeR - could you provide an update on the state of this PR / the blocked issue? what product decision were you requesting when adding the label?

@LeonarddeR

LeonarddeR commented Aug 8, 2025

Copy link
Copy Markdown
Collaborator Author

@seanbudd This pull request adds an option to the object navigation category that applies to all places where objects occur, both in focus mode and browse mode. However in #18410, I mentioned the panel description of that category:

Configure how much information NVDA will present about controls. These options apply to focus reporting and NVDA object navigation, but not when reading text content e.g. web content with browse mode.

Therefore the documentation on the panel conflicts with this pr. Note that the documentation also conflicts with the Report object shortcut keys option, which has a similar scope as the new multi select option added in this pr.

So basically why I'm requesting a product decision. What is considered wrong, the panel description or the behavior of these controls that both apply to focus and browse mode?
If the panel description is considered wrong, I prefer to change it as part of this PR.

@seanbudd seanbudd marked this pull request as ready for review August 11, 2025 02:12
Copilot AI review requested due to automatic review settings August 11, 2025 02:12
@seanbudd seanbudd requested review from a team as code owners August 11, 2025 02:12
@seanbudd seanbudd added blocked blocked/needs-product-decision A product decision needs to be made. Decisions about NVDA UX or supported use-cases. labels Aug 11, 2025

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 adds support for reporting when list controls support multiple selection. NVDA will now announce "multi-select" for lists that allow selecting multiple items, with a new configuration option to control this behavior.

Key changes:

  • Introduces a new MULTISELECTABLE state to represent when a control supports multiple selection
  • Maps UIA and MSAA properties to this new state for different accessibility APIs
  • Adds a user-configurable option to enable/disable this reporting (disabled by default)

Reviewed Changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
source/controlTypes/state.py Defines new MULTISELECTABLE state constant and display string
source/controlTypes/processAndLabelStates.py Adds logic to conditionally report the multiselectable state based on user preference
source/config/configSpec.py Adds configuration option for reporting multi-select capability
source/gui/settingsDialogs.py Adds UI checkbox for the new configuration option
source/braille.py Adds braille representation for the multiselectable state
source/NVDAObjects/UIA/init.py Maps UIA SelectionCanSelectMultiple property to the new state
source/NVDAObjects/IAccessible/init.py Maps Windows list box extended selection style to the new state
source/IAccessibleHandler/init.py Maps MSAA multiselectable state to the new NVDA state
source/winUser.py Adds Windows constant for extended selection list box style
user_docs/en/userGuide.md Documents the new configuration option

Comment thread user_docs/en/userGuide.md Outdated
Comment thread source/controlTypes/processAndLabelStates.py
@SaschaCowley SaschaCowley removed the blocked/needs-product-decision A product decision needs to be made. Decisions about NVDA UX or supported use-cases. label Aug 12, 2025
@SaschaCowley

Copy link
Copy Markdown
Member

We wil fix the description of the object presentation panel separately.

@LeonarddeR why is this blocked/needs-internal-fix?

@LeonarddeR

Copy link
Copy Markdown
Collaborator Author

Because I thought the issue with the panel should be fixed first. I'm happy to remove the label though.

Comment thread source/NVDAObjects/IAccessible/__init__.py Outdated
Comment thread user_docs/en/userGuide.md Outdated
@seanbudd

Copy link
Copy Markdown
Member

Thanks @LeonarddeR

@seanbudd seanbudd enabled auto-merge (squash) August 15, 2025 07:06

@Qchristensen Qchristensen 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.

Reads well, good work

@seanbudd seanbudd disabled auto-merge August 15, 2025 07:15
@seanbudd seanbudd merged commit 7fc755f into nvaccess:master Aug 15, 2025
18 checks passed
OzancanKaratas pushed a commit to OzancanKaratas/nvda that referenced this pull request Aug 17, 2025
Link to issue number:

Closes nvaccess#18365
Summary of the issue:

NVDA does not report whether multiple selection is supported on a list control.
Description of user facing changes:

NVDA now reports multi select for a list that supports multiple selection.
Description of developer facing changes:

None
Description of development approach:

    Add a new MULTISELECTABLE state, analogous to oleacc
    Map that state to the oleacc state for MSAA
    Map the UIA Selection Can Select Multiple property to the new state.
@SaschaCowley SaschaCowley added this to the 2026.1 milestone Aug 18, 2025
OzancanKaratas pushed a commit to OzancanKaratas/nvda that referenced this pull request Aug 18, 2025
Link to issue number:

Closes nvaccess#18365
Summary of the issue:

NVDA does not report whether multiple selection is supported on a list control.
Description of user facing changes:

NVDA now reports multi select for a list that supports multiple selection.
Description of developer facing changes:

None
Description of development approach:

    Add a new MULTISELECTABLE state, analogous to oleacc
    Map that state to the oleacc state for MSAA
    Map the UIA Selection Can Select Multiple property to the new state.
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.

Report when a Win32 listbox is multi-selection

5 participants