Improve screen reader, keyboard, and High Contrast accessibility - #2518
Conversation
|
Hi, just following up on this PR now that it has been ready for review for a few weeks. It corrects long-standing screen-reader and keyboard accessibility problems in the Open-Shell settings dialogs and includes tested changes for NVDA, standard Windows tree navigation, control roles and states, focus handling, and High Contrast support. I would appreciate a review when someone has time. I’m happy to answer questions, provide the inspection evidence, or revise and split the changes if that would make review easier. |
|
Hello and thank you for your effort. I'm sorry, I didn't have much time to look at these changes :( Please, try to install build from this PR and double-check everything works for you as well. |
|
Hello, Thank you for taking the time to review and test these changes. I did not intend to overwhelm you with such a large pull request. My goal was to address the long-standing screen-reader and keyboard usability problems while preserving the existing experience for sighted users. I have installed and tested the build from the pull-request commit, and everything is working correctly for me. My before-and-after accessibility inspection also confirms that the changes expose the correct control roles, names, states, and keyboard behavior to screen readers. I sincerely appreciate your willingness to spend the time and effort reviewing this work. Please let me know if you have any questions or would like any additional testing information. Best regards, |
|
I can see several issues with the build from this PR (testing in Win11 Sandbox):
In general, it seems there is an issue with content refresh. |
|
Thank you for catching this, and apologies for the regression. In short, I fixed the dialog for nonvisual users and accidentally broke its refresh for visual users—oops.\n\nThe cause was the accessibility tab-order change also modifying the sibling window order. That could place the active settings page behind the tab control, leaving the page blank or apparently stale even though its accessible objects were still present.\n\nI removed that runtime window reordering and now handle keyboard traversal separately, leaving the page's drawing order intact. I reproduced all three reported cases and visually verified the corrected installed build in the Start Menu, Classic Explorer, and Classic IE settings dialogs:\n\n- Show all settings refreshes correctly in both directions.\n- Ctrl+Tab changes tabs and displays the new page contents.\n- Search displays the matching settings instead of a blank page.\n\nThe correction is in commit e36056c. Thank you again for the careful review. |
|
@jbgrimsby |
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
modifiedonly when a setting differs from its default, matching the existing bold visual treatment.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
CallCancelledexception 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.