From f5cf700ce2fb23507f3ff0c4afee41b882f392f1 Mon Sep 17 00:00:00 2001 From: BlackSpirits Date: Sun, 13 Sep 2026 18:09:25 +0200 Subject: [PATCH 1/4] Tests: cover hidden accessibility inputs --- tests/UI/Logic/AccessibleNamesTests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/UI/Logic/AccessibleNamesTests.cs b/tests/UI/Logic/AccessibleNamesTests.cs index 387887d73f..ee65162537 100644 --- a/tests/UI/Logic/AccessibleNamesTests.cs +++ b/tests/UI/Logic/AccessibleNamesTests.cs @@ -80,7 +80,7 @@ public void EveryInputInEveryWindow_HasAnAccessibleName() { foreach (var control in window.GetLogicalDescendants().OfType()) { - if (!AccessibleLabels.IsInput(control) || control.TemplatedParent != null || !control.IsEffectivelyVisible) + if (!AccessibleLabels.IsInput(control) || control.TemplatedParent != null) { continue; } From e2216f0623d1350433fe2f430d19f58e98ecbc81 Mon Sep 17 00:00:00 2001 From: BlackSpirits Date: Sun, 13 Sep 2026 18:17:08 +0200 Subject: [PATCH 2/4] Accessibility: label inputs hidden on initial load --- src/ui/Features/Translate/TranslateSettingsWindow.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ui/Features/Translate/TranslateSettingsWindow.cs b/src/ui/Features/Translate/TranslateSettingsWindow.cs index df9b4f86f9..47df1d6cb2 100644 --- a/src/ui/Features/Translate/TranslateSettingsWindow.cs +++ b/src/ui/Features/Translate/TranslateSettingsWindow.cs @@ -81,6 +81,7 @@ public TranslateSettingsWindow(TranslateSettingsViewModel vm) TextWrapping = Avalonia.Media.TextWrapping.Wrap, }.BindIsVisible(vm, nameof(vm.PromptIsVisible)) .BindText(vm, nameof(vm.PromptText)); + promptTextBox.WithLabeledBy(labelPrompt); var buttonOk = UiUtil.MakeButtonOk(vm.OkCommand); var buttonCancel = UiUtil.MakeButtonCancel(vm.CancelCommand); From c894d1de75abe6b854cb761cfce52d1d2119a0f0 Mon Sep 17 00:00:00 2001 From: BlackSpirits Date: Sun, 13 Sep 2026 18:17:12 +0200 Subject: [PATCH 3/4] Accessibility: label inputs hidden on initial load --- .../Video/TextToSpeech/VoiceManager/VoiceManagerWindow.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ui/Features/Video/TextToSpeech/VoiceManager/VoiceManagerWindow.cs b/src/ui/Features/Video/TextToSpeech/VoiceManager/VoiceManagerWindow.cs index e0371eeb79..4b0fb39aa7 100644 --- a/src/ui/Features/Video/TextToSpeech/VoiceManager/VoiceManagerWindow.cs +++ b/src/ui/Features/Video/TextToSpeech/VoiceManager/VoiceManagerWindow.cs @@ -504,6 +504,7 @@ private Control MakeDetailsPane(VoiceManagerViewModel vm) HorizontalAlignment = HorizontalAlignment.Stretch, [!TextBox.TextProperty] = new Binding(nameof(vm.Transcript)) { Mode = BindingMode.TwoWay }, }; + transcriptBox.WithLabeledBy(transcriptHeader); var transcriptPanel = new StackPanel { From 89bec2281f491a4f7a1e9dcff75dff50e34ef808 Mon Sep 17 00:00:00 2001 From: BlackSpirits Date: Sun, 13 Sep 2026 19:15:31 +0200 Subject: [PATCH 4/4] Tests: include hidden inputs in accessibility sweep --- tests/UI/Logic/AccessibleNamesTests.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/UI/Logic/AccessibleNamesTests.cs b/tests/UI/Logic/AccessibleNamesTests.cs index ee65162537..c6ebcf5f15 100644 --- a/tests/UI/Logic/AccessibleNamesTests.cs +++ b/tests/UI/Logic/AccessibleNamesTests.cs @@ -21,7 +21,9 @@ namespace UITests.Logic; /// by the window or derived from its visible label by /// (#12087: "I hear a value followed by combo box, but no label telling me which setting /// I am changing"). This opens every tool window that takes a single DI-resolvable view -/// model and lists the inputs that still have no name. +/// model and lists the inputs that still have no name. Hidden inputs are included because +/// AccessibleLabels.Apply runs once when the window loads; controls that become visible later +/// do not get a second inference pass. /// public class AccessibleNamesTests {