{{ message }}
Repository navigation
Fix Tab/Shift+Tab traversal in tab controls and name the tab scroll buttons - #5546
Open
Gabriel Dufresne (GabrielDuf) wants to merge 2 commits into
Open
Gabriel Dufresne (GabrielDuf) wants to merge 2 commits into
Gabriel Dufresne (GabrielDuf) wants to merge 2 commits into
Conversation
Contributor
There was a problem hiding this comment.
🟡 Changes recommended
The Kurdish screen-reader names need to match the locale’s existing Sorani language variety and script.
1 open issue
What changed in this PR
Addresses #5543 by correcting tab-control keyboard traversal and naming the installation-options tab scroll buttons for screen readers.
Changes:
- Registers an app-wide focus guard that restores the selected tab as the header’s tab stop.
- Adds translated accessibility names for both scroll buttons.
- Adds the two strings to all 60 language files.
Review effort: Balanced
There was a problem hiding this comment.
🤖 Pull request was approved automatically: the AI review is complete and all its review threads are resolved. 🎉
Integration Details
{
"deliveryId": "6bf873b0-cbe5-11f1-83db-79e51a2375ce",
"headSha": "f08004a550a62254c73bbb61f087540ad5cf8296",
"reviewer": "copilot-pull-request-reviewer[bot]"
}This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Root cause
Avalonia's
ItemsControl.OnGotFocusrecords any focused descendant as the control'sTabOnceActiveElement, andTabControlcopies that value onto its tab-header panel (TabNavigation=Once). As soon as something inside the selected tab's content, or a template part such as the tab-strip scroll chevrons, got focus, the header panel's single tab stop pointed at an element outside the panel:This is still the behaviour in Avalonia 12.1.0.
Fix
TabControlFocusGuard: an app-wideGotFocusclass handler onTabControl, installed inApp.Initializenext toButtonActivationGuard. It runs afterItemsControl's handler and, unless the focused element is one of that control's own tab items, resetsTabOnceActiveElementto the selected tab item. The ownership check usesIndexFromContainerinstead of a type test, so a nestedTabControl's headers still reset the outer one. Because it's app-wide, the About, Manage shortcuts and Operation history tab controls are fixed too.Path, so screen readers announced Avalonia.Controls.Shapes.Path. They now get the WinUI TabView wording, Scroll tab list backward/forward, set from code-behind so the shared template stays independent of the view model. The two keys are added to all 60 language files. These are accessibility names only; nothing visible changes.Verification
TabControlFocusGuard.cslinked in, traversal is symmetric in every case: chevrons hidden, chevrons visible and focusable, and a nestedTabControl.dotnet format whitespaceandstyleboth exit 0;Verify-Translations.ps1and the boundary check pass;UniGetUI.Core.LanguageEngine.Testspasses (298/298).Closes #5543