Forge
csharpdeeb25a2
1#nullable enable
2using Avalonia.Automation.Peers;
3
4namespace CascadeIDE.Views;
5
6/// <summary>Минимальный a11y-peer: значение composer для screen readers (ADR 0123).</summary>
7internal sealed class SkiaComposerAutomationPeer(SkiaChatSurfaceControl owner) : ControlAutomationPeer(owner)
8{
9 private SkiaChatSurfaceControl SkiaOwner => (SkiaChatSurfaceControl)Owner;
10
11 protected override AutomationControlType GetAutomationControlTypeCore() =>
12 AutomationControlType.Edit;
13
14 protected override bool IsContentElementCore() => true;
15
16 protected override string GetClassNameCore() => nameof(SkiaChatSurfaceControl);
17
18 protected override string GetNameCore() =>
19 SkiaOwner.IsCommandLineInputActive
20 ? "Cockpit command line"
21 : string.IsNullOrWhiteSpace(SkiaOwner.ComposerPlaceholder)
22 ? "Intercom composer"
23 : SkiaOwner.ComposerPlaceholder;
24
25 protected override string GetAutomationIdCore() =>
26 SkiaOwner.IsCommandLineInputActive ? "cockpit-command-line" : "intercom-composer";
27
28 protected override bool IsKeyboardFocusableCore() =>
29 SkiaOwner.ShowIntercomComposer && SkiaOwner.IsComposerEnabled;
30
31 protected override bool HasKeyboardFocusCore() =>
32 SkiaOwner.IsKeyboardFocusWithin
33 && !SkiaOwner.IsNavigatorSearchInputActive;
34}
35
View only · write via MCP/CIDE