Skip to content

Conversation

LeonarddeR
Copy link
Collaborator

@LeonarddeR LeonarddeR commented Jul 3, 2025

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
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
Copy link
Member

seanbudd commented Aug 8, 2025

@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
Copy link
Collaborator Author

LeonarddeR commented Aug 8, 2025

@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 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
Copy link
Contributor

@Copilot Copilot AI left a comment

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

@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
Member

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

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

@LeonarddeR
Copy link
Collaborator Author

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

@seanbudd
Copy link
Member

Thanks @LeonarddeR

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

@Qchristensen Qchristensen left a comment

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
4 participants