Skip to content

NVDAObjects.UIA: let NVDA recognize drag and drop states based on IsGrabbed property #14081

@josephsl

Description

@josephsl

Hi,

This issue stems from #12271

Is your feature request related to a problem? Please describe.

NVDA objects representing UIA elements can expose UIA patterns through dev info facility (NVDA+F1). While some patterns are mapped to object states, a number of useful patterns to states mapping are missing.

A prominent group of patterns relate to drag and drop. Specificaly, UIA elements can expose drag and drop target patterns for use by assistive technologies to inform users about draggable items. This is used in Narrator and NVDA (the latter via an add-on) to notify users about drag and drop target operations such as rearranging virtual desktops on Windows 11, placing Start menu times in Windows 10, and managing apps and folders in Windows 11 Version 22H2 Start menu. While these patterns are exposed by elements, they are not mapped to drag and drop target states yet.

Describe the solution you'd like

Since NVDA does come with drag and drop target states in control types package, let UIA NVDA objects add drag/drop target states based on exposed patterns.

Describe alternatives you've considered

None - cannot be done easily via add-ons as it touches NVDAObjects.UIA.UIA._get_states getter.

Additional context

This issue came from discussions surrouding #12271 as the pull request for it was unmanageable and led to user experience issues. Therefore, this issue serves as a starting point for resolving the mentioned issue in a series of pull requests to make the work more manageable.

Tanks.

Metadata

Metadata

Assignees

No one assigned

    Labels

    api/uiaFeature or bug requires an understanding of UIAp4https://github.com/nvaccess/nvda/blob/master/projectDocs/issues/triage.md#prioritytriagedHas been triaged, issue is waiting for implementation.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions