1
0
Эх сурвалжийг харах

Ensure that Open is called on main menu.

Steven Kirk 5 жил өмнө
parent
commit
226c57b7d7

+ 5 - 0
src/Avalonia.Controls/Platform/DefaultMenuInteractionHandler.cs

@@ -364,6 +364,11 @@ namespace Avalonia.Controls.Platform
                 }
                 else
                 {
+                    if (item.IsTopLevel && item.Parent is IMainMenu mainMenu)
+                    {
+                        mainMenu.Open();
+                    }
+
                     Open(item, false);
                 }
 

+ 18 - 0
tests/Avalonia.Controls.UnitTests/Platform/DefaultMenuInteractionHandlerTests.cs

@@ -124,6 +124,24 @@ namespace Avalonia.Controls.UnitTests.Platform
                 Assert.True(e.Handled);
             }
 
+            [Fact]
+            public void Click_On_TopLevel_Calls_MainMenu_Open()
+            {
+                var target = new DefaultMenuInteractionHandler(false);
+                var menu = new Mock<IMainMenu>();
+                menu.As<IMenuElement>();
+
+                var item = Mock.Of<IMenuItem>(x =>
+                    x.IsTopLevel == true &&
+                    x.HasSubMenu == true &&
+                    x.Parent == menu.Object);
+
+                var e = CreatePressed(item);
+
+                target.PointerPressed(item, e);
+                menu.Verify(x => x.Open());
+            }
+
             [Fact]
             public void Click_On_Open_TopLevel_Menu_Closes_Menu()
             {