Browse Source

Expose max/min for slider controls etc.

ui-automation-test
Steven Kirk 5 years ago
parent
commit
2df1e32aae
  1. 29
      native/Avalonia.Native/src/OSX/automation.mm
  2. 6
      src/Avalonia.Native/AvnAutomationPeer.cs
  3. 6
      src/Avalonia.Native/avn.idl

29
native/Avalonia.Native/src/OSX/automation.mm

@ -157,6 +157,27 @@ public:
return [super accessibilityValue]; return [super accessibilityValue];
} }
- (id)accessibilityMinValue
{
if (_peer->IsRangeValueProvider())
{
return [NSNumber numberWithDouble:_peer->RangeValueProvider_GetMinimum()];
}
return [super accessibilityMinValue];
}
- (id)accessibilityMaxValue
{
if (_peer->IsRangeValueProvider())
{
return [NSNumber numberWithDouble:_peer->RangeValueProvider_GetMaximum()];
}
return [super accessibilityMaxValue];
}
- (NSArray *)accessibilityChildren - (NSArray *)accessibilityChildren
{ {
if (_children == nullptr && _peer != nullptr) if (_children == nullptr && _peer != nullptr)
@ -226,7 +247,7 @@ public:
{ {
if (!_peer->IsExpandCollapseProvider()) if (!_peer->IsExpandCollapseProvider())
return NO; return NO;
return _peer->ExpandCollapseProvider_IsExpanded(); return _peer->ExpandCollapseProvider_GetIsExpanded();
} }
- (void)setAccessibilityExpanded:(BOOL)accessibilityExpanded - (void)setAccessibilityExpanded:(BOOL)accessibilityExpanded
@ -284,7 +305,7 @@ public:
{ {
if (selector == @selector(accessibilityPerformShowMenu)) if (selector == @selector(accessibilityPerformShowMenu))
{ {
return _peer->IsExpandCollapseProvider() && _peer->ExpandCollapseProvider_ShowsMenu(); return _peer->IsExpandCollapseProvider() && _peer->ExpandCollapseProvider_GetShowsMenu();
} }
else if (selector == @selector(isAccessibilityExpanded)) else if (selector == @selector(isAccessibilityExpanded))
{ {
@ -295,7 +316,9 @@ public:
return _peer->IsInvokeProvider() || _peer->IsExpandCollapseProvider(); return _peer->IsInvokeProvider() || _peer->IsExpandCollapseProvider();
} }
else if (selector == @selector(accessibilityPerformIncrement) || else if (selector == @selector(accessibilityPerformIncrement) ||
selector == @selector(accessibilityPerformDecrement)) selector == @selector(accessibilityPerformDecrement) ||
selector == @selector(accessibilityMinValue) ||
selector == @selector(accessibilityMaxValue))
{ {
return _peer->IsRangeValueProvider(); return _peer->IsRangeValueProvider();
} }

6
src/Avalonia.Native/AvnAutomationPeer.cs

@ -78,14 +78,14 @@ namespace Avalonia.Native
public int IsExpandCollapseProvider() => (_inner is IExpandCollapseProvider).AsComBool(); public int IsExpandCollapseProvider() => (_inner is IExpandCollapseProvider).AsComBool();
public int ExpandCollapseProvider_IsExpanded() => ((IExpandCollapseProvider)_inner).ExpandCollapseState switch public int ExpandCollapseProvider_GetIsExpanded() => ((IExpandCollapseProvider)_inner).ExpandCollapseState switch
{ {
ExpandCollapseState.Expanded => 1, ExpandCollapseState.Expanded => 1,
ExpandCollapseState.PartiallyExpanded => 1, ExpandCollapseState.PartiallyExpanded => 1,
_ => 0, _ => 0,
}; };
public int ExpandCollapseProvider_ShowsMenu() => ((IExpandCollapseProvider)_inner).ShowsMenu.AsComBool(); public int ExpandCollapseProvider_GetShowsMenu() => ((IExpandCollapseProvider)_inner).ShowsMenu.AsComBool();
public void ExpandCollapseProvider_Expand() => ((IExpandCollapseProvider)_inner).Expand(); public void ExpandCollapseProvider_Expand() => ((IExpandCollapseProvider)_inner).Expand();
public void ExpandCollapseProvider_Collapse() => ((IExpandCollapseProvider)_inner).Collapse(); public void ExpandCollapseProvider_Collapse() => ((IExpandCollapseProvider)_inner).Collapse();
@ -94,6 +94,8 @@ namespace Avalonia.Native
public int IsRangeValueProvider() => (_inner is IRangeValueProvider).AsComBool(); public int IsRangeValueProvider() => (_inner is IRangeValueProvider).AsComBool();
public double RangeValueProvider_GetValue() => ((IRangeValueProvider)_inner).Value; public double RangeValueProvider_GetValue() => ((IRangeValueProvider)_inner).Value;
public double RangeValueProvider_GetMinimum() => ((IRangeValueProvider)_inner).Minimum;
public double RangeValueProvider_GetMaximum() => ((IRangeValueProvider)_inner).Maximum;
public double RangeValueProvider_GetSmallChange() => ((IRangeValueProvider)_inner).SmallChange; public double RangeValueProvider_GetSmallChange() => ((IRangeValueProvider)_inner).SmallChange;
public double RangeValueProvider_GetLargeChange() => ((IRangeValueProvider)_inner).LargeChange; public double RangeValueProvider_GetLargeChange() => ((IRangeValueProvider)_inner).LargeChange;
public void RangeValueProvider_SetValue(double value) => ((IRangeValueProvider)_inner).SetValue(value); public void RangeValueProvider_SetValue(double value) => ((IRangeValueProvider)_inner).SetValue(value);

6
src/Avalonia.Native/avn.idl

@ -817,8 +817,8 @@ interface IAvnAutomationPeer : IUnknown
IAvnAutomationPeer* RootProvider_GetPeerFromPoint(AvnPoint point); IAvnAutomationPeer* RootProvider_GetPeerFromPoint(AvnPoint point);
bool IsExpandCollapseProvider(); bool IsExpandCollapseProvider();
bool ExpandCollapseProvider_IsExpanded(); bool ExpandCollapseProvider_GetIsExpanded();
bool ExpandCollapseProvider_ShowsMenu(); bool ExpandCollapseProvider_GetShowsMenu();
void ExpandCollapseProvider_Expand(); void ExpandCollapseProvider_Expand();
void ExpandCollapseProvider_Collapse(); void ExpandCollapseProvider_Collapse();
@ -827,6 +827,8 @@ interface IAvnAutomationPeer : IUnknown
bool IsRangeValueProvider(); bool IsRangeValueProvider();
double RangeValueProvider_GetValue(); double RangeValueProvider_GetValue();
double RangeValueProvider_GetMinimum();
double RangeValueProvider_GetMaximum();
double RangeValueProvider_GetSmallChange(); double RangeValueProvider_GetSmallChange();
double RangeValueProvider_GetLargeChange(); double RangeValueProvider_GetLargeChange();
void RangeValueProvider_SetValue(double value); void RangeValueProvider_SetValue(double value);

Loading…
Cancel
Save