Browse Source

Implement provider members as explicit interface members.

Previous change showed up a problem where incorrect interface was getting called for `IsReadOnly`.
ui-automation-test
Steven Kirk 5 years ago
parent
commit
98a070e1af
  1. 6
      src/Windows/Avalonia.Win32/Automation/AutomationNode.ExpandCollapse.cs
  2. 10
      src/Windows/Avalonia.Win32/Automation/AutomationNode.RangeValue.cs
  3. 18
      src/Windows/Avalonia.Win32/Automation/AutomationNode.Scroll.cs
  4. 16
      src/Windows/Avalonia.Win32/Automation/AutomationNode.Selection.cs
  5. 4
      src/Windows/Avalonia.Win32/Automation/AutomationNode.Toggle.cs
  6. 5
      src/Windows/Avalonia.Win32/Automation/AutomationNode.Value.cs

6
src/Windows/Avalonia.Win32/Automation/AutomationNode.ExpandCollapse.cs

@ -8,12 +8,12 @@ namespace Avalonia.Win32.Automation
{
internal partial class AutomationNode : UIA.IExpandCollapseProvider
{
public ExpandCollapseState ExpandCollapseState
ExpandCollapseState UIA.IExpandCollapseProvider.ExpandCollapseState
{
get => InvokeSync<IExpandCollapseProvider, ExpandCollapseState>(x => x.ExpandCollapseState);
}
public void Expand() => InvokeSync<IExpandCollapseProvider>(x => x.Expand());
public void Collapse() => InvokeSync<IExpandCollapseProvider>(x => x.Collapse());
void UIA.IExpandCollapseProvider.Expand() => InvokeSync<IExpandCollapseProvider>(x => x.Expand());
void UIA.IExpandCollapseProvider.Collapse() => InvokeSync<IExpandCollapseProvider>(x => x.Collapse());
}
}

10
src/Windows/Avalonia.Win32/Automation/AutomationNode.RangeValue.cs

@ -8,11 +8,11 @@ namespace Avalonia.Win32.Automation
internal partial class AutomationNode : UIA.IRangeValueProvider
{
double UIA.IRangeValueProvider.Value => InvokeSync<IRangeValueProvider, double>(x => x.Value);
public bool IsReadOnly => InvokeSync<IRangeValueProvider, bool>(x => x.IsReadOnly);
public double Maximum => InvokeSync<IRangeValueProvider, double>(x => x.Maximum);
public double Minimum => InvokeSync<IRangeValueProvider, double>(x => x.Minimum);
public double LargeChange => 1;
public double SmallChange => 1;
bool UIA.IRangeValueProvider.IsReadOnly => InvokeSync<IRangeValueProvider, bool>(x => x.IsReadOnly);
double UIA.IRangeValueProvider.Maximum => InvokeSync<IRangeValueProvider, double>(x => x.Maximum);
double UIA.IRangeValueProvider.Minimum => InvokeSync<IRangeValueProvider, double>(x => x.Minimum);
double UIA.IRangeValueProvider.LargeChange => 1;
double UIA.IRangeValueProvider.SmallChange => 1;
public void SetValue(double value) => InvokeSync<IRangeValueProvider>(x => x.SetValue(value));
}

18
src/Windows/Avalonia.Win32/Automation/AutomationNode.Scroll.cs

@ -7,24 +7,24 @@ namespace Avalonia.Win32.Automation
{
internal partial class AutomationNode : UIA.IScrollProvider, UIA.IScrollItemProvider
{
public bool HorizontallyScrollable => InvokeSync<IScrollProvider, bool>(x => x.HorizontallyScrollable);
public double HorizontalScrollPercent => InvokeSync<IScrollProvider, double>(x => x.HorizontalScrollPercent);
public double HorizontalViewSize => InvokeSync<IScrollProvider, double>(x => x.HorizontalViewSize);
public bool VerticallyScrollable => InvokeSync<IScrollProvider, bool>(x => x.VerticallyScrollable);
public double VerticalScrollPercent => InvokeSync<IScrollProvider, double>(x => x.VerticalScrollPercent);
public double VerticalViewSize => InvokeSync<IScrollProvider, double>(x => x.VerticalViewSize);
bool UIA.IScrollProvider.HorizontallyScrollable => InvokeSync<IScrollProvider, bool>(x => x.HorizontallyScrollable);
double UIA.IScrollProvider.HorizontalScrollPercent => InvokeSync<IScrollProvider, double>(x => x.HorizontalScrollPercent);
double UIA.IScrollProvider.HorizontalViewSize => InvokeSync<IScrollProvider, double>(x => x.HorizontalViewSize);
bool UIA.IScrollProvider.VerticallyScrollable => InvokeSync<IScrollProvider, bool>(x => x.VerticallyScrollable);
double UIA.IScrollProvider.VerticalScrollPercent => InvokeSync<IScrollProvider, double>(x => x.VerticalScrollPercent);
double UIA.IScrollProvider.VerticalViewSize => InvokeSync<IScrollProvider, double>(x => x.VerticalViewSize);
public void Scroll(ScrollAmount horizontalAmount, ScrollAmount verticalAmount)
void UIA.IScrollProvider.Scroll(ScrollAmount horizontalAmount, ScrollAmount verticalAmount)
{
InvokeSync<IScrollProvider>(x => x.Scroll(horizontalAmount, verticalAmount));
}
public void SetScrollPercent(double horizontalPercent, double verticalPercent)
void UIA.IScrollProvider.SetScrollPercent(double horizontalPercent, double verticalPercent)
{
InvokeSync<IScrollProvider>(x => x.SetScrollPercent(horizontalPercent, verticalPercent));
}
public void ScrollIntoView()
void UIA.IScrollItemProvider.ScrollIntoView()
{
InvokeSync(() => Peer.BringIntoView());
}

16
src/Windows/Avalonia.Win32/Automation/AutomationNode.Selection.cs

@ -11,11 +11,11 @@ namespace Avalonia.Win32.Automation
{
internal partial class AutomationNode : UIA.ISelectionProvider, UIA.ISelectionItemProvider
{
public bool CanSelectMultiple => InvokeSync<ISelectionProvider, bool>(x => x.CanSelectMultiple);
public bool IsSelectionRequired => InvokeSync<ISelectionProvider, bool>(x => x.IsSelectionRequired);
public bool IsSelected => InvokeSync<ISelectionItemProvider, bool>(x => x.IsSelected);
bool UIA.ISelectionProvider.CanSelectMultiple => InvokeSync<ISelectionProvider, bool>(x => x.CanSelectMultiple);
bool UIA.ISelectionProvider.IsSelectionRequired => InvokeSync<ISelectionProvider, bool>(x => x.IsSelectionRequired);
bool UIA.ISelectionItemProvider.IsSelected => InvokeSync<ISelectionItemProvider, bool>(x => x.IsSelected);
public UIA.IRawElementProviderSimple? SelectionContainer
UIA.IRawElementProviderSimple? UIA.ISelectionItemProvider.SelectionContainer
{
get
{
@ -24,15 +24,15 @@ namespace Avalonia.Win32.Automation
}
}
public UIA.IRawElementProviderSimple[] GetSelection()
UIA.IRawElementProviderSimple[] UIA.ISelectionProvider.GetSelection()
{
var peers = InvokeSync<ISelectionProvider, IReadOnlyList<AutomationPeer>>(x => x.GetSelection());
return peers?.Select(x => (UIA.IRawElementProviderSimple)GetOrCreate(x)!).ToArray() ??
Array.Empty<UIA.IRawElementProviderSimple>();
}
public void AddToSelection() => InvokeSync<ISelectionItemProvider>(x => x.AddToSelection());
public void RemoveFromSelection() => InvokeSync<ISelectionItemProvider>(x => x.RemoveFromSelection());
public void Select() => InvokeSync<ISelectionItemProvider>(x => x.Select());
void UIA.ISelectionItemProvider.AddToSelection() => InvokeSync<ISelectionItemProvider>(x => x.AddToSelection());
void UIA.ISelectionItemProvider.RemoveFromSelection() => InvokeSync<ISelectionItemProvider>(x => x.RemoveFromSelection());
void UIA.ISelectionItemProvider.Select() => InvokeSync<ISelectionItemProvider>(x => x.Select());
}
}

4
src/Windows/Avalonia.Win32/Automation/AutomationNode.Toggle.cs

@ -7,7 +7,7 @@ namespace Avalonia.Win32.Automation
{
internal partial class AutomationNode : UIA.IToggleProvider
{
public ToggleState ToggleState => InvokeSync<IToggleProvider, ToggleState>(x => x.ToggleState);
public void Toggle() => InvokeSync<IToggleProvider>(x => x.Toggle());
ToggleState UIA.IToggleProvider.ToggleState => InvokeSync<IToggleProvider, ToggleState>(x => x.ToggleState);
void UIA.IToggleProvider.Toggle() => InvokeSync<IToggleProvider>(x => x.Toggle());
}
}

5
src/Windows/Avalonia.Win32/Automation/AutomationNode.Value.cs

@ -8,9 +8,10 @@ namespace Avalonia.Win32.Automation
{
internal partial class AutomationNode : UIA.IValueProvider
{
public string? Value => InvokeSync<IValueProvider, string?>(x => x.Value);
bool UIA.IValueProvider.IsReadOnly => InvokeSync<IValueProvider, bool>(x => x.IsReadOnly);
string? UIA.IValueProvider.Value => InvokeSync<IValueProvider, string?>(x => x.Value);
public void SetValue([MarshalAs(UnmanagedType.LPWStr)] string? value)
void UIA.IValueProvider.SetValue([MarshalAs(UnmanagedType.LPWStr)] string? value)
{
InvokeSync<IValueProvider>(x => x.SetValue(value));
}

Loading…
Cancel
Save