Browse Source

Ensure that Open is called on main menu.

pull/4099/head
Steven Kirk 6 years ago
parent
commit
226c57b7d7
  1. 5
      src/Avalonia.Controls/Platform/DefaultMenuInteractionHandler.cs
  2. 18
      tests/Avalonia.Controls.UnitTests/Platform/DefaultMenuInteractionHandlerTests.cs

5
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
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()
{

Loading…
Cancel
Save