diff --git a/src/Avalonia.Controls/Automation/Peers/NativeMenuBarAutomationPeer.cs b/src/Avalonia.Controls/Automation/Peers/NativeMenuBarAutomationPeer.cs deleted file mode 100644 index 39377aadd5..0000000000 --- a/src/Avalonia.Controls/Automation/Peers/NativeMenuBarAutomationPeer.cs +++ /dev/null @@ -1,35 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using Avalonia.Controls; -using Avalonia.LogicalTree; -using Avalonia.VisualTree; - -namespace Avalonia.Automation.Peers -{ - public class NativeMenuBarAutomationPeer(NativeMenuBar owner) : ControlAutomationPeer(owner) - { - protected override AutomationControlType GetAutomationControlTypeCore() - { - return AutomationControlType.MenuBar; - } - - protected override IReadOnlyList? GetChildrenCore() - { - var menu = Owner.VisualChildren.OfType().FirstOrDefault() ?? - Owner.GetVisualDescendants().OfType().FirstOrDefault(); - - if (menu is null) - { - return base.GetChildrenCore(); - } - - var children = menu.GetLogicalChildren() - .OfType() - .Where(x => x.IsVisible) - .Select(GetOrCreate) - .ToList(); - - return children.Count > 0 ? children : base.GetChildrenCore(); - } - } -} diff --git a/src/Avalonia.Controls/NativeMenuBar.cs b/src/Avalonia.Controls/NativeMenuBar.cs index ddb0b8136e..022511bafa 100644 --- a/src/Avalonia.Controls/NativeMenuBar.cs +++ b/src/Avalonia.Controls/NativeMenuBar.cs @@ -1,5 +1,4 @@ using System; -using Avalonia.Automation.Peers; using Avalonia.Controls.Metadata; using Avalonia.Controls.Primitives; using Avalonia.Controls.Templates; @@ -71,7 +70,5 @@ namespace Avalonia.Controls menu.Bind(ItemsControl.ItemsSourceProperty, topLevel.GetBindingObservable(NativeMenu.MenuProperty) .Select(v => v.GetValueOrDefault()?.Items))); } - - protected override AutomationPeer OnCreateAutomationPeer() => new NativeMenuBarAutomationPeer(this); } } diff --git a/tests/Avalonia.Controls.UnitTests/Automation/NativeMenuBarAutomationPeerTests.cs b/tests/Avalonia.Controls.UnitTests/Automation/NativeMenuBarAutomationPeerTests.cs deleted file mode 100644 index 6586fb31d6..0000000000 --- a/tests/Avalonia.Controls.UnitTests/Automation/NativeMenuBarAutomationPeerTests.cs +++ /dev/null @@ -1,73 +0,0 @@ -using System.Linq; -using Avalonia; -using Avalonia.Automation; -using Avalonia.Automation.Peers; -using Avalonia.Controls; -using Avalonia.Controls.Templates; -using Avalonia.UnitTests; -using Avalonia.VisualTree; -using Xunit; - -namespace Avalonia.Controls.UnitTests.Automation; - -public class NativeMenuBarAutomationPeerTests -{ - public class PeerCreation : ScopedTestBase - { - [Fact] - public void Creates_NativeMenuBarAutomationPeer() - { - var control = new NativeMenuBar { Template = CreateTemplate() }; - var peer = ControlAutomationPeer.CreatePeerForElement(control); - - Assert.IsType(peer); - } - - [Fact] - public void ControlType_Is_MenuBar() - { - var control = new NativeMenuBar { Template = CreateTemplate() }; - var peer = (NativeMenuBarAutomationPeer)ControlAutomationPeer.CreatePeerForElement(control); - - Assert.Equal(AutomationControlType.MenuBar, peer.GetAutomationControlType()); - } - } - - public class Children : ScopedTestBase - { - [Fact] - public void Exposes_Realized_MenuItems_Via_VisualChildren() - { - var control = new NativeMenuBar { Template = CreateTemplate() }; - control.ApplyTemplate(); - var menu = Assert.IsType(control.GetVisualChildren().Single()); - menu.ApplyTemplate(); - menu.Measure(Size.Infinity); - menu.Arrange(new Rect(0, 0, 300, 30)); - control.Measure(Size.Infinity); - control.Arrange(new Rect(0, 0, 300, 30)); - - var peer = (NativeMenuBarAutomationPeer)ControlAutomationPeer.CreatePeerForElement(control); - var presenterChildren = peer.GetChildren(); - - Assert.Equal(2, presenterChildren.Count); - Assert.All(presenterChildren, x => Assert.IsType(x)); - Assert.Equal("File", presenterChildren[0].GetName()); - Assert.Equal("Edit", presenterChildren[1].GetName()); - } - } - - private static FuncControlTemplate CreateTemplate() - { - return new FuncControlTemplate((_, ns) => - new Menu - { - Name = "PART_NativeMenuPresenter", - Items = - { - new MenuItem { Header = "File" }, - new MenuItem { Header = "Edit" }, - }, - }.RegisterInNameScope(ns)); - } -}