Skip to content

Add Quick Navigation commands for clickable elements - #20628

Merged
seanbudd merged 3 commits into
nvaccess:masterfrom
cary-rowen:add-clickable-quick-navigation
Aug 10, 2026
Merged

Add Quick Navigation commands for clickable elements#20628
seanbudd merged 3 commits into
nvaccess:masterfrom
cary-rowen:add-clickable-quick-navigation

Conversation

@cary-rowen

Copy link
Copy Markdown
Contributor

Link to issue number:

Partially addresses #14429.

Summary of the issue:

Some websites use custom interactive elements that NVDA reports as clickable rather than exposing them as semantic links or buttons. Browse mode does not currently provide Quick Navigation commands for moving between these elements.

Description of user facing changes:

Adds unassigned Quick Navigation commands for moving to the next or previous clickable element in browse mode. Users can assign gestures to these commands in the Input Gestures dialog.

Clickable elements are also available as an optional browse mode touch navigation element type.

Description of developer facing changes:

Adds a clickable Quick Navigation node type to the browse mode framework and implements native lookup conditions for IA2, MSHTML, and UIA browse mode backends.

Adds a Chrome system test covering clickable element navigation. No existing API signatures are changed.

Description of development approach:

The implementation uses the existing BrowseModeTreeInterceptor.addQuickNav mechanism with no default key assigned.

Each browse mode backend uses metadata it already exposes for clickable elements:

  • IA2 searches for the click accessible action.
  • MSHTML searches for non-empty onclick, onmousedown, or onmouseup attributes.
  • UIA searches for generic text, group, or image controls that support the Invoke pattern.

The searches use the native virtual buffer or UIA condition mechanisms. Clickable elements are reported by line to avoid reading an entire clickable container.

The Elements List was not changed.

Testing strategy:

Manual testing:

  1. Assigned gestures to the next and previous clickable element commands.
  2. Opened a web page containing clickable elements in browse mode.
  3. Used the assigned gestures to navigate forward and backward between the clickable elements.
  4. Confirmed that both commands moved to the expected elements.

Result: Passed.

System testing:

  • Ran the Chrome Clickable navigation system test.
  • The test covers forward and backward navigation, document boundaries, skipping a semantic button, and navigation when clickable reporting is disabled.

Result: Passed.

Known issues with pull request:

Clickable elements are not added to the Elements List. This pull request only implements Quick Navigation commands.

No other known issues.

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.

@cary-rowen
cary-rowen marked this pull request as ready for review August 7, 2026 06:26
@cary-rowen
cary-rowen requested review from a team as code owners August 7, 2026 06:26

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

Please just fix up the changelog

Comment thread user_docs/en/changes.md Outdated

@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 (just needs the change log text bumped to the 2026.3 heading per Sean's comment)

@seanbudd
seanbudd enabled auto-merge (squash) August 10, 2026 06:08
@seanbudd
seanbudd merged commit 952d6e7 into nvaccess:master Aug 10, 2026
83 of 85 checks passed
@github-actions github-actions Bot added this to the 2026.3 milestone Aug 10, 2026
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.

3 participants