Browse Source

Use correct role for combobox items on OSX.

ui-automation-test
Steven Kirk 5 years ago
parent
commit
6096cab3b9
  1. 1
      native/Avalonia.Native/src/OSX/automation.mm
  2. 1
      src/Avalonia.Controls/Automation/Peers/AutomationPeer.cs
  3. 24
      src/Avalonia.Controls/Automation/Peers/ComboBoxItemAutomationPeer.cs
  4. 7
      src/Avalonia.Controls/ComboBoxItem.cs
  5. 1
      src/Avalonia.Native/avn.idl
  6. 1
      src/Windows/Avalonia.Win32/Automation/AutomationNode.cs

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

@ -75,6 +75,7 @@ public:
case AutomationCalendar: return NSAccessibilityGridRole; case AutomationCalendar: return NSAccessibilityGridRole;
case AutomationCheckBox: return NSAccessibilityCheckBoxRole; case AutomationCheckBox: return NSAccessibilityCheckBoxRole;
case AutomationComboBox: return NSAccessibilityPopUpButtonRole; case AutomationComboBox: return NSAccessibilityPopUpButtonRole;
case AutomationComboBoxItem: return NSAccessibilityMenuItemRole;
case AutomationEdit: return NSAccessibilityTextFieldRole; case AutomationEdit: return NSAccessibilityTextFieldRole;
case AutomationHyperlink: return NSAccessibilityLinkRole; case AutomationHyperlink: return NSAccessibilityLinkRole;
case AutomationImage: return NSAccessibilityImageRole; case AutomationImage: return NSAccessibilityImageRole;

1
src/Avalonia.Controls/Automation/Peers/AutomationPeer.cs

@ -13,6 +13,7 @@ namespace Avalonia.Automation.Peers
Calendar, Calendar,
CheckBox, CheckBox,
ComboBox, ComboBox,
ComboBoxItem,
Edit, Edit,
Hyperlink, Hyperlink,
Image, Image,

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

@ -0,0 +1,24 @@
using System;
using Avalonia.Automation.Platform;
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(IAutomationNodeFactory factory, ComboBoxItem owner)
: base(factory, owner)
{
}
protected override AutomationControlType GetAutomationControlTypeCore()
{
return AutomationControlType.ComboBoxItem;
}
}
}

7
src/Avalonia.Controls/ComboBoxItem.cs

@ -1,5 +1,7 @@
using System; using System;
using System.Reactive.Linq; using System.Reactive.Linq;
using Avalonia.Automation.Peers;
using Avalonia.Automation.Platform;
namespace Avalonia.Controls namespace Avalonia.Controls
{ {
@ -13,5 +15,10 @@ namespace Avalonia.Controls
this.GetObservable(ComboBoxItem.IsFocusedProperty).Where(focused => focused) this.GetObservable(ComboBoxItem.IsFocusedProperty).Where(focused => focused)
.Subscribe(_ => (Parent as ComboBox)?.ItemFocused(this)); .Subscribe(_ => (Parent as ComboBox)?.ItemFocused(this));
} }
protected override AutomationPeer OnCreateAutomationPeer(IAutomationNodeFactory factory)
{
return new ComboBoxItemAutomationPeer(factory, this);
}
} }
} }

1
src/Avalonia.Native/avn.idl

@ -414,6 +414,7 @@ enum AvnAutomationControlType
AutomationCalendar, AutomationCalendar,
AutomationCheckBox, AutomationCheckBox,
AutomationComboBox, AutomationComboBox,
AutomationComboBoxItem,
AutomationEdit, AutomationEdit,
AutomationHyperlink, AutomationHyperlink,
AutomationImage, AutomationImage,

1
src/Windows/Avalonia.Win32/Automation/AutomationNode.cs

@ -299,6 +299,7 @@ namespace Avalonia.Win32.Automation
AutomationControlType.Calendar => UiaControlTypeId.Calendar, AutomationControlType.Calendar => UiaControlTypeId.Calendar,
AutomationControlType.CheckBox => UiaControlTypeId.CheckBox, AutomationControlType.CheckBox => UiaControlTypeId.CheckBox,
AutomationControlType.ComboBox => UiaControlTypeId.ComboBox, AutomationControlType.ComboBox => UiaControlTypeId.ComboBox,
AutomationControlType.ComboBoxItem => UiaControlTypeId.ListItem,
AutomationControlType.Edit => UiaControlTypeId.Edit, AutomationControlType.Edit => UiaControlTypeId.Edit,
AutomationControlType.Hyperlink => UiaControlTypeId.Hyperlink, AutomationControlType.Hyperlink => UiaControlTypeId.Hyperlink,
AutomationControlType.Image => UiaControlTypeId.Image, AutomationControlType.Image => UiaControlTypeId.Image,

Loading…
Cancel
Save