Skip to content

fix Accessibility issues on the settings page for screen reader users. #4667

Merged
Gabriel Dufresne (GabrielDuf) merged 9 commits intoDevolutions:mainfrom
aryanchoudharypro:srfix
May 1, 2026
Merged

fix Accessibility issues on the settings page for screen reader users. #4667
Gabriel Dufresne (GabrielDuf) merged 9 commits intoDevolutions:mainfrom
aryanchoudharypro:srfix

Conversation

@aryanchoudharypro
Copy link
Copy Markdown
Contributor

@aryanchoudharypro Aryan Choudhary (aryanchoudharypro) commented May 1, 2026

fixed accessibility issues in the app settings page.

Added AutomationProperties.SetName to the CustomNavViewItem control to ensure screen readers correctly announce the localized names for navigation options like 'Software Updates' and 'Installed Packages'.
This commit resolves several UX issues to significantly improve the keyboard and screen reader navigation flow:
- Added AutomationProperties.Name to the loading screen grid, operation list resizers, and the ExpandCollapseOpList button.
- Disabled IsTabStop on the custom TitleBar so it doesn't get focused unnecessarily.
- Fixed accessibility for view mode and filter options by assigning them grouping roles.
- Added descriptive labels to the ToggleFiltersButton and MainToolbarButtonDropdown ('More actions').
- Bound AutomationProperties.Name to the dynamic text of MainToolbarButton so it correctly reads 'Install selected packages', etc.
- Added AutomationProperties.Name to the BackButton on the package preferences dialog.
- Added AutomationProperties.Name to the search mode radio buttons.
- Removed 'ghost' tab stops following the Help button by explicitly setting IsTabStop='False' and OverflowButtonVisibility='Collapsed' on the CommandBar and surrounding layout containers.
- Fixed CheckboxHeader by setting IsTabStop='False' and AccessibilityView='Raw'.
- Improved package list item accessibility by building a custom AutomationPeer for PackageItemContainer that implements IToggleProvider and acts natively as a CheckBox role, allowing direct selection and status announcement without an extra tab stop.
- Added AutomationProperties.Name and ToolTip labels ('User profile') to the dynamic GitHub login/cloud backup avatar UserControl in the main title bar.
Set IsTabStop='False' and AccessibilityView='Raw' on the FiltersResizer to completely remove it from the keyboard navigation flow and accessibility tree, as it is purely visual and does not need to be focused by screen reader users.
This commit improves the Settings screen accessibility:
- Fixed an issue where toggle switches (e.g., 'Install prerelease versions') only announced their state ('Enabled'/'Disabled') by properly binding their AutomationProperties.Name to the setting's descriptive text across CheckboxCard, CheckboxButtonCard, and SecureCheckboxCard.
- Fixed an issue where hyperlinks (e.g., 'Become a translator') announced strictly as 'link' without text by properly exposing the internal text of TranslatedTextBlock user controls to UI Automation.
This commit adds a Loaded event handler to the custom SettingsCard widgets (ButtonCard, CheckboxButtonCard, CheckboxCard, SecureCheckboxCard) to strictly enforce their AutomationProperties.Name and LocalizedControlType='grouping'. This prevents the underlying Windows Community Toolkit logic from overriding the grouping name with the internal button's face text upon rendering.
This commit resolves trailing whitespace formatting issues reported by CI.
This commit applies AutomationProperties.Name and AutomationProperties.HelpText to the SettingsPageButton custom widget and enforces them on the Loaded event, ensuring that screen readers properly announce the button text alongside its descriptive subtext.
@GabrielDuf Gabriel Dufresne (GabrielDuf) merged commit 8ab9538 into Devolutions:main May 1, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

2 participants