-
Notifications
You must be signed in to change notification settings - Fork 38.3k
Closed
Labels
accessibilityKeyboard, mouse, ARIA, vision, screen readers (non-specific) issuesKeyboard, mouse, ARIA, vision, screen readers (non-specific) issuesfeature-requestRequest for new features or functionalityRequest for new features or functionalityinsiders-releasedPatch has been released in VS Code InsidersPatch has been released in VS Code Insidersverification-neededVerification of issue is requestedVerification of issue is requestedverifiedVerification succeededVerification succeeded
Milestone
Description
Summary
This issue tracks ARIA improvements and bug fixes for find/filter widgets to enhance the screen reader experience.
Problem Statement
Currently, find widgets have several accessibility issues:
- Spurious "No results" announcements - The find widget announces "No results" even when the search string is empty, causing confusing screen reader output
- Stale aria-label updates - The widget updates aria-labels even when not visible, which can interfere with screen reader focus
- Missing accessibility help hints - Users have no indication that accessibility help is available (Alt+F1)
- Double-speak issue - Hints can be announced multiple times in rapid succession
Proposed Changes
Bug Fixes (findWidget.ts)
-
Guard search result announcements - Only announce results when a search string is present:
// Before: Always announced results // After: Only announce when search string exists if (this._state.searchString) { this._updateSearchResultAria(); }
-
Check widget visibility - Only update aria-label when widget is visible:
if (!this._isVisible) { return; }
ARIA Hint Additions (simpleFindWidget.ts)
Add accessibility help hints to all find widgets inheriting from SimpleFindWidget:
-
Add announcement tracking flag:
private _accessibilityHelpHintAnnounced: boolean = false;
-
Add IConfigurationService and IAccessibilityService for settings checks
-
Announce hint pattern - Announce "Press Alt+F1 for accessibility help" on focus:
- Only announce once per session
- Uses 1-second reset timeout to prevent double-speak
- Only when accessibility.verbosity.find setting is enabled
- Only when screen reader is active
Files Changed
| File | Change Type | Description |
|---|---|---|
src/vs/editor/contrib/find/browser/findWidget.ts |
Bug Fix | Guard against spurious announcements |
src/vs/workbench/contrib/codeEditor/browser/find/simpleFindWidget.ts |
Enhancement | Add ARIA hints base implementation |
src/vs/workbench/browser/parts/views/viewFilter.ts |
Enhancement | Add ARIA hints to tree filter widgets |
src/vs/workbench/contrib/search/browser/searchWidget.ts |
Enhancement | Add ARIA hints to search widget |
src/vs/workbench/contrib/terminalContrib/find/browser/terminalFindWidget.ts |
Wiring | Add service dependencies |
src/vs/workbench/contrib/webview/browser/webviewFindWidget.ts |
Wiring | Add service dependencies |
Acceptance Criteria
- No "No results" announcement when search input is empty
- No aria-label updates when find widget is hidden
- Screen reader users hear "Press Alt+F1 for accessibility help" once when focusing find input
- Hint only announces when accessibility.verbosity.find setting is enabled
- No double-speak of the hint
Related
- Depends on: Add Accessibility Help System for Find/Filter Dialogs #292367 (Accessibility Help System infrastructure)
- PR: (to be created)
Testing
- Enable screen reader (NVDA/JAWS/VoiceOver)
- Open find widget (Ctrl+F)
- Verify hint is announced once
- Close and reopen - verify hint announces again
- Clear search input - verify no "No results" announcement
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
accessibilityKeyboard, mouse, ARIA, vision, screen readers (non-specific) issuesKeyboard, mouse, ARIA, vision, screen readers (non-specific) issuesfeature-requestRequest for new features or functionalityRequest for new features or functionalityinsiders-releasedPatch has been released in VS Code InsidersPatch has been released in VS Code Insidersverification-neededVerification of issue is requestedVerification of issue is requestedverifiedVerification succeededVerification succeeded