Browse Source

Fix for previous PR19985 - AccessibilityNodeInfoCompat.Checked (#19991)

* fixed

* fixed

* fixed naming

* just not having a good PR
pull/20023/head
Bobby Cannon 12 months ago
committed by GitHub
parent
commit
a12b8d7061
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
  1. 17
      src/Android/Avalonia.Android/Automation/ToggleNodeInfoProvider.cs

17
src/Android/Avalonia.Android/Automation/ToggleNodeInfoProvider.cs

@ -9,13 +9,18 @@ namespace Avalonia.Android.Automation
{ {
internal class ToggleNodeInfoProvider : NodeInfoProvider<IToggleProvider> internal class ToggleNodeInfoProvider : NodeInfoProvider<IToggleProvider>
{ {
private PropertyInfo? _checkedProperty; private static PropertyInfo? s_checkedProperty;
public ToggleNodeInfoProvider(ExploreByTouchHelper owner, AutomationPeer peer, int virtualViewId) : public ToggleNodeInfoProvider(ExploreByTouchHelper owner, AutomationPeer peer, int virtualViewId) :
base(owner, peer, virtualViewId) base(owner, peer, virtualViewId)
{ {
} }
static ToggleNodeInfoProvider()
{
s_checkedProperty = typeof(AccessibilityNodeInfoCompat).GetProperty(nameof(AccessibilityNodeInfoCompat.Checked));
}
public override bool PerformNodeAction(int action, Bundle? arguments) public override bool PerformNodeAction(int action, Bundle? arguments)
{ {
IToggleProvider provider = GetProvider(); IToggleProvider provider = GetProvider();
@ -36,11 +41,11 @@ namespace Avalonia.Android.Automation
IToggleProvider provider = GetProvider(); IToggleProvider provider = GetProvider();
_checkedProperty ??= nodeInfo.GetType().GetProperty(nameof(nodeInfo.Checked)); s_checkedProperty ??= nodeInfo.GetType().GetProperty(nameof(nodeInfo.Checked));
if (_checkedProperty?.PropertyType == typeof(int)) if (s_checkedProperty?.PropertyType == typeof(int))
{ {
// Needed for Xamarin.AndroidX.Core 1.17+ // Needed for Xamarin.AndroidX.Core 1.17+
_checkedProperty.SetValue(this, s_checkedProperty.SetValue(this,
provider.ToggleState switch provider.ToggleState switch
{ {
ToggleState.On => 1, ToggleState.On => 1,
@ -48,10 +53,10 @@ namespace Avalonia.Android.Automation
_ => 0 _ => 0
}); });
} }
else if (_checkedProperty?.PropertyType == typeof(bool)) else if (s_checkedProperty?.PropertyType == typeof(bool))
{ {
// Needed for Xamarin.AndroidX.Core < 1.17 // Needed for Xamarin.AndroidX.Core < 1.17
_checkedProperty.SetValue(this, provider.ToggleState == ToggleState.On); s_checkedProperty.SetValue(this, provider.ToggleState == ToggleState.On);
} }
nodeInfo.Checkable = true; nodeInfo.Checkable = true;

Loading…
Cancel
Save