Browse Source

Use new properties to remove some peers.

Simple peers which only change the accessibility view or control type can now use the new `AutomationProperties`.
ui-automation-test
Steven Kirk 5 years ago
parent
commit
0756c1b3be
  1. 19
      src/Avalonia.Controls/Automation/Peers/CheckBoxAutomationPeer.cs
  2. 23
      src/Avalonia.Controls/Automation/Peers/ComboBoxItemAutomationPeer.cs
  3. 21
      src/Avalonia.Controls/Automation/Peers/ContextMenuAutomationPeer.cs
  4. 19
      src/Avalonia.Controls/Automation/Peers/ImageAutomationPeer.cs
  5. 21
      src/Avalonia.Controls/Automation/Peers/MenuAutomationPeer.cs
  6. 19
      src/Avalonia.Controls/Automation/Peers/SliderAutomationPeer.cs
  7. 19
      src/Avalonia.Controls/Automation/Peers/TabControlAutomationPeer.cs
  8. 17
      src/Avalonia.Controls/Automation/Peers/TabItemAutomationPeer.cs
  9. 5
      src/Avalonia.Controls/CheckBox.cs
  10. 5
      src/Avalonia.Controls/ComboBoxItem.cs
  11. 8
      src/Avalonia.Controls/ContextMenu.cs
  12. 7
      src/Avalonia.Controls/Image.cs
  13. 8
      src/Avalonia.Controls/Menu.cs
  14. 7
      src/Avalonia.Controls/Slider.cs
  15. 7
      src/Avalonia.Controls/TabControl.cs
  16. 7
      src/Avalonia.Controls/TabItem.cs

19
src/Avalonia.Controls/Automation/Peers/CheckBoxAutomationPeer.cs

@ -1,19 +0,0 @@
using Avalonia.Controls;
#nullable enable
namespace Avalonia.Automation.Peers
{
public class CheckBoxAutomationPeer : ToggleButtonAutomationPeer
{
public CheckBoxAutomationPeer(CheckBox owner)
: base(owner)
{
}
protected override AutomationControlType GetAutomationControlTypeCore()
{
return AutomationControlType.CheckBox;
}
}
}

23
src/Avalonia.Controls/Automation/Peers/ComboBoxItemAutomationPeer.cs

@ -1,23 +0,0 @@
using System;
using Avalonia.Automation.Provider;
using Avalonia.Controls;
using Avalonia.Controls.Primitives;
using Avalonia.Controls.Selection;
#nullable enable
namespace Avalonia.Automation.Peers
{
public class ComboBoxItemAutomationPeer : ListItemAutomationPeer
{
public ComboBoxItemAutomationPeer(ComboBoxItem owner)
: base(owner)
{
}
protected override AutomationControlType GetAutomationControlTypeCore()
{
return AutomationControlType.ComboBoxItem;
}
}
}

21
src/Avalonia.Controls/Automation/Peers/ContextMenuAutomationPeer.cs

@ -1,21 +0,0 @@
using Avalonia.Controls;
#nullable enable
namespace Avalonia.Automation.Peers
{
public class ContextMenuAutomationPeer : ControlAutomationPeer
{
public ContextMenuAutomationPeer(ContextMenu owner)
: base(owner)
{
}
protected override AutomationControlType GetAutomationControlTypeCore()
{
return AutomationControlType.Menu;
}
protected override bool IsContentElementCore() => false;
}
}

19
src/Avalonia.Controls/Automation/Peers/ImageAutomationPeer.cs

@ -1,19 +0,0 @@
using Avalonia.Controls;
#nullable enable
namespace Avalonia.Automation.Peers
{
public class ImageAutomationPeer : ControlAutomationPeer
{
public ImageAutomationPeer(Control owner)
: base(owner)
{
}
protected override AutomationControlType GetAutomationControlTypeCore()
{
return AutomationControlType.Image;
}
}
}

21
src/Avalonia.Controls/Automation/Peers/MenuAutomationPeer.cs

@ -1,21 +0,0 @@
using Avalonia.Controls;
#nullable enable
namespace Avalonia.Automation.Peers
{
public class MenuAutomationPeer : ControlAutomationPeer
{
public MenuAutomationPeer(Menu owner)
: base(owner)
{
}
protected override AutomationControlType GetAutomationControlTypeCore()
{
return AutomationControlType.Menu;
}
protected override bool IsContentElementCore() => false;
}
}

19
src/Avalonia.Controls/Automation/Peers/SliderAutomationPeer.cs

@ -1,19 +0,0 @@
using Avalonia.Controls;
#nullable enable
namespace Avalonia.Automation.Peers
{
public class SliderAutomationPeer : RangeBaseAutomationPeer
{
public SliderAutomationPeer(Slider owner)
: base(owner)
{
}
protected override AutomationControlType GetAutomationControlTypeCore()
{
return AutomationControlType.Slider;
}
}
}

19
src/Avalonia.Controls/Automation/Peers/TabControlAutomationPeer.cs

@ -1,19 +0,0 @@
using Avalonia.Controls;
#nullable enable
namespace Avalonia.Automation.Peers
{
public class TabControlAutomationPeer : SelectingItemsControlAutomationPeer
{
public TabControlAutomationPeer(TabControl owner)
: base(owner)
{
}
protected override AutomationControlType GetAutomationControlTypeCore()
{
return AutomationControlType.Tab;
}
}
}

17
src/Avalonia.Controls/Automation/Peers/TabItemAutomationPeer.cs

@ -1,17 +0,0 @@
using Avalonia.Controls;
namespace Avalonia.Automation.Peers
{
public class TabItemAutomationPeer : ListItemAutomationPeer
{
public TabItemAutomationPeer(TabItem owner)
: base(owner)
{
}
protected override AutomationControlType GetAutomationControlTypeCore()
{
return AutomationControlType.TabItem;
}
}
}

5
src/Avalonia.Controls/CheckBox.cs

@ -1,3 +1,4 @@
using Avalonia.Automation;
using Avalonia.Automation.Peers;
using Avalonia.Controls.Primitives;
@ -8,9 +9,9 @@ namespace Avalonia.Controls
/// </summary>
public class CheckBox : ToggleButton
{
protected override AutomationPeer OnCreateAutomationPeer()
static CheckBox()
{
return new CheckBoxAutomationPeer(this);
AutomationProperties.ControlTypeOverrideProperty.OverrideDefaultValue<CheckBox>(AutomationControlType.CheckBox);
}
}
}

5
src/Avalonia.Controls/ComboBoxItem.cs

@ -1,5 +1,6 @@
using System;
using System.Reactive.Linq;
using Avalonia.Automation;
using Avalonia.Automation.Peers;
namespace Avalonia.Controls
@ -15,9 +16,9 @@ namespace Avalonia.Controls
.Subscribe(_ => (Parent as ComboBox)?.ItemFocused(this));
}
protected override AutomationPeer OnCreateAutomationPeer()
static ComboBoxItem()
{
return new ComboBoxItemAutomationPeer(this);
AutomationProperties.ControlTypeOverrideProperty.OverrideDefaultValue<ComboBoxItem>(AutomationControlType.ComboBoxItem);
}
}
}

8
src/Avalonia.Controls/ContextMenu.cs

@ -14,6 +14,7 @@ using Avalonia.Input.Platform;
using Avalonia.Interactivity;
using Avalonia.Layout;
using Avalonia.Styling;
using Avalonia.Automation;
#nullable enable
@ -110,6 +111,8 @@ namespace Avalonia.Controls
ItemsPanelProperty.OverrideDefaultValue<ContextMenu>(DefaultPanel);
PlacementModeProperty.OverrideDefaultValue<ContextMenu>(PlacementMode.Pointer);
ContextMenuProperty.Changed.Subscribe(ContextMenuChanged);
AutomationProperties.AccessibilityViewProperty.OverrideDefaultValue<ContextMenu>(AccessibilityView.Control);
AutomationProperties.ControlTypeOverrideProperty.OverrideDefaultValue<ContextMenu>(AutomationControlType.Menu);
}
/// <summary>
@ -319,11 +322,6 @@ namespace Avalonia.Controls
return new MenuItemContainerGenerator(this);
}
protected override AutomationPeer OnCreateAutomationPeer()
{
return new ContextMenuAutomationPeer(this);
}
private void Open(Control control, Control placementTarget, bool requestedByPointer)
{
if (IsOpen)

7
src/Avalonia.Controls/Image.cs

@ -1,3 +1,4 @@
using Avalonia.Automation;
using Avalonia.Automation.Peers;
using Avalonia.Media;
using Avalonia.Media.Imaging;
@ -34,6 +35,7 @@ namespace Avalonia.Controls
{
AffectsRender<Image>(SourceProperty, StretchProperty, StretchDirectionProperty);
AffectsMeasure<Image>(SourceProperty, StretchProperty, StretchDirectionProperty);
AutomationProperties.ControlTypeOverrideProperty.OverrideDefaultValue<Image>(AutomationControlType.Image);
}
/// <summary>
@ -125,10 +127,5 @@ namespace Avalonia.Controls
return new Size();
}
}
protected override AutomationPeer OnCreateAutomationPeer()
{
return new ImageAutomationPeer(this);
}
}
}

8
src/Avalonia.Controls/Menu.cs

@ -1,3 +1,4 @@
using Avalonia.Automation;
using Avalonia.Automation.Peers;
using Avalonia.Controls.Platform;
using Avalonia.Controls.Primitives;
@ -38,6 +39,8 @@ namespace Avalonia.Controls
static Menu()
{
ItemsPanelProperty.OverrideDefaultValue(typeof(Menu), DefaultPanel);
AutomationProperties.AccessibilityViewProperty.OverrideDefaultValue<Menu>(AccessibilityView.Control);
AutomationProperties.ControlTypeOverrideProperty.OverrideDefaultValue<Menu>(AutomationControlType.Menu);
}
/// <inheritdoc/>
@ -92,10 +95,5 @@ namespace Avalonia.Controls
inputRoot.AccessKeyHandler.MainMenu = this;
}
}
protected override AutomationPeer OnCreateAutomationPeer()
{
return new MenuAutomationPeer(this);
}
}
}

7
src/Avalonia.Controls/Slider.cs

@ -9,6 +9,7 @@ using Avalonia.Input;
using Avalonia.Interactivity;
using Avalonia.Layout;
using Avalonia.Utilities;
using Avalonia.Automation;
namespace Avalonia.Controls
{
@ -106,6 +107,7 @@ namespace Avalonia.Controls
RoutingStrategies.Bubble);
ValueProperty.OverrideMetadata<Slider>(new DirectPropertyMetadata<double>(enableDataValidation: true));
AutomationProperties.ControlTypeOverrideProperty.OverrideDefaultValue<Slider>(AutomationControlType.Slider);
}
/// <summary>
@ -210,11 +212,6 @@ namespace Avalonia.Controls
_pointerMovedDispose = this.AddDisposableHandler(PointerMovedEvent, TrackMoved, RoutingStrategies.Tunnel);
}
protected override AutomationPeer OnCreateAutomationPeer()
{
return new SliderAutomationPeer(this);
}
protected override void OnKeyDown(KeyEventArgs e)
{
base.OnKeyDown(e);

7
src/Avalonia.Controls/TabControl.cs

@ -10,6 +10,7 @@ using Avalonia.Input;
using Avalonia.Layout;
using Avalonia.LogicalTree;
using Avalonia.VisualTree;
using Avalonia.Automation;
namespace Avalonia.Controls
{
@ -69,6 +70,7 @@ namespace Avalonia.Controls
ItemsPanelProperty.OverrideDefaultValue<TabControl>(DefaultPanel);
AffectsMeasure<TabControl>(TabStripPlacementProperty);
SelectedItemProperty.Changed.AddClassHandler<TabControl>((x, e) => x.UpdateSelectedContent());
AutomationProperties.ControlTypeOverrideProperty.OverrideDefaultValue<TabControl>(AutomationControlType.Tab);
}
/// <summary>
@ -231,10 +233,5 @@ namespace Avalonia.Controls
}
}
}
protected override AutomationPeer OnCreateAutomationPeer()
{
return new TabControlAutomationPeer(this);
}
}
}

7
src/Avalonia.Controls/TabItem.cs

@ -1,3 +1,4 @@
using Avalonia.Automation;
using Avalonia.Automation.Peers;
using Avalonia.Controls.Metadata;
using Avalonia.Controls.Mixins;
@ -32,6 +33,7 @@ namespace Avalonia.Controls
PressedMixin.Attach<TabItem>();
FocusableProperty.OverrideDefaultValue(typeof(TabItem), true);
DataContextProperty.Changed.AddClassHandler<TabItem>((x, e) => x.UpdateHeader(e));
AutomationProperties.ControlTypeOverrideProperty.OverrideDefaultValue<TabItem>(AutomationControlType.TabItem);
}
/// <summary>
@ -81,10 +83,5 @@ namespace Avalonia.Controls
}
}
}
protected override AutomationPeer OnCreateAutomationPeer()
{
return new TabItemAutomationPeer(this);
}
}
}

Loading…
Cancel
Save