diff --git a/native/Avalonia.Native/src/OSX/automation.mm b/native/Avalonia.Native/src/OSX/automation.mm index 556cf209af..7d697140c2 100644 --- a/native/Avalonia.Native/src/OSX/automation.mm +++ b/native/Avalonia.Native/src/OSX/automation.mm @@ -349,6 +349,13 @@ private: return YES; } +- (BOOL)isAccessibilitySelected +{ + if (_peer->IsSelectionItemProvider()) + return _peer->SelectionItemProvider_IsSelected(); + return NO; +} + - (BOOL)isAccessibilitySelectorAllowed:(SEL)selector { if (selector == @selector(accessibilityPerformShowMenu)) diff --git a/src/Avalonia.Native/AvnAutomationPeer.cs b/src/Avalonia.Native/AvnAutomationPeer.cs index bcb3d54fcf..4c1e69aa16 100644 --- a/src/Avalonia.Native/AvnAutomationPeer.cs +++ b/src/Avalonia.Native/AvnAutomationPeer.cs @@ -126,6 +126,9 @@ namespace Avalonia.Native public double RangeValueProvider_GetSmallChange() => ((IRangeValueProvider)_inner).SmallChange; public double RangeValueProvider_GetLargeChange() => ((IRangeValueProvider)_inner).LargeChange; public void RangeValueProvider_SetValue(double value) => ((IRangeValueProvider)_inner).SetValue(value); + + public int IsSelectionItemProvider() => (_inner is ISelectionItemProvider).AsComBool(); + public int SelectionItemProvider_IsSelected() => ((ISelectionItemProvider)_inner).IsSelected.AsComBool(); public int IsToggleProvider() => (_inner is IToggleProvider).AsComBool(); public int ToggleProvider_GetToggleState() => (int)((IToggleProvider)_inner).ToggleState; diff --git a/src/Avalonia.Native/avn.idl b/src/Avalonia.Native/avn.idl index 954aeb3fb4..6bb6f69a6f 100644 --- a/src/Avalonia.Native/avn.idl +++ b/src/Avalonia.Native/avn.idl @@ -856,6 +856,9 @@ interface IAvnAutomationPeer : IUnknown double RangeValueProvider_GetLargeChange(); void RangeValueProvider_SetValue(double value); + bool IsSelectionItemProvider(); + bool SelectionItemProvider_IsSelected(); + bool IsToggleProvider(); int ToggleProvider_GetToggleState(); void ToggleProvider_Toggle();