Skip to content

Improve screen reader, keyboard, and High Contrast accessibility - #2518

Open
jbgrimsby wants to merge 1 commit into
Open-Shell:masterfrom
jbgrimsby:agent/accessibility-settings
Open

Improve screen reader, keyboard, and High Contrast accessibility#2518
jbgrimsby wants to merge 1 commit into
Open-Shell:masterfrom
jbgrimsby:agent/accessibility-settings

Conversation

@jbgrimsby

Copy link
Copy Markdown

Summary

This change corrects screen-reader and keyboard interaction in the Start Menu, Classic Explorer, and Classic IE settings dialogs while preserving the existing visual workflow.

It also makes the new-application indicator respect the Windows High Contrast palette, addressing the color conflict described in #2054.

What changed

  • Expose settings-tree checkboxes and radio buttons with their correct MSAA roles and checked states.
  • Include the selected choice in a parent setting's accessible name.
  • Announce modified only when a setting differs from its default, matching the existing bold visual treatment.
  • Give settings trees, edit controls, the search field, pages, and the tab strip meaningful accessible names.
  • Restore standard tree navigation: Left returns to a parent or collapses it; Right expands a parent or enters its first child.
  • Correct dialog tab order, Ctrl+Tab wrapping, and focus behavior when switching between basic and advanced settings.
  • Keep focus on Show all settings when it is toggled and omit a one-page tab strip from keyboard navigation.
  • Preserve the visible bold-setting guidance while preventing screen readers from announcing irrelevant visual-only instructions.
  • Expose Start Menu folder expanded/collapsed states and concise menu names/actions.
  • Use system highlight and highlight-text colors for new-item variants while High Contrast is active. Normal themed rendering is unchanged.
  • Initialize COM in the Classic Explorer and Classic IE settings launchers so accessibility annotations can be applied reliably.

Root cause

The settings interface visually represented checkbox, radio-button, selected, default, and modified states through custom tree images and bold text, but exposed the items to assistive technology as generic outline items. Some keyboard behavior was also implemented differently from standard Windows tree and property-page interaction.

The new-application indicator could additionally use a skin foreground color as a background under High Contrast, producing unreadable adjacent items.

Validation

  • Built the x64 Start Menu target with Visual Studio 2022 Build Tools.
  • Built the Classic Explorer settings launcher.
  • Built the x64 Classic IE settings launcher.
  • Installed and tested the patched build with NVDA 2026.1.1.
  • Captured before/after Microsoft Active Accessibility data for Start Menu, Classic Explorer, and Classic IE settings.
  • Verified checkbox role 44, radio-button role 45, checked state, selected-choice names, modified state, control names, and tab order.
  • Verified all four standard Left/Right Arrow tree-navigation cases.
  • Repeated the dialog scenario from NVDA screen reader freezes on dialogs launched from Open-Shell Start menu after recent Windows update #2476 with NVDA debug logging and add-ons disabled. The warning dialog and focused Cancel button were announced promptly; no watchdog freeze or CallCancelled exception occurred during that run. This single run is positive evidence but does not claim that the separate intermittent report is conclusively resolved.

User impact

Screen-reader users can determine which settings are selected or modified, navigate the trees using standard Windows conventions, and move through the dialogs in a predictable order. Sighted users retain the existing layout, bold modified-setting indication, and normal theme rendering.

@jbgrimsby
jbgrimsby marked this pull request as ready for review August 18, 2026 17:48
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.

1 participant