Browse Source

correctly handle changes on app menu

pull/2978/head
Dan Walmsley 7 years ago
parent
commit
d0dda3e7c6
  1. 10
      native/Avalonia.Native/src/OSX/menu.mm
  2. 14
      samples/ControlCatalog/App.xaml
  3. 2
      samples/ControlCatalog/App.xaml.cs

10
native/Avalonia.Native/src/OSX/menu.mm

@ -217,8 +217,18 @@ extern void SetAppMenu (NSString* appName, IAvnAppMenu* menu)
{
auto nativeMenu = dynamic_cast<AvnAppMenu*>(s_appMenu);
auto currentMenu = [s_appMenuItem menu];
[currentMenu removeItem:s_appMenuItem];
s_appMenuItem = [nativeMenu->GetNative() itemAtIndex:0];
[[s_appMenuItem menu] removeItem:s_appMenuItem];
[currentMenu insertItem:s_appMenuItem atIndex:0];
//[NSApp setMenu:nativeMenu->GetNative()];
auto appMenu = [s_appMenuItem submenu];
[appMenu addItem:[NSMenuItem separatorItem]];

14
samples/ControlCatalog/App.xaml

@ -20,13 +20,19 @@
<NativeMenu.Menu>
<NativeMenu>
<NativeMenuItem Header="Open" Clicked="OnOpenClicked"/>
<NativeMenuItem Header="Recent">
<NativeMenuItem>
<NativeMenuItem.Menu>
<NativeMenu/>
<NativeMenu>
<NativeMenuItem Header="Open" Clicked="OnOpenClicked"/>
<NativeMenuItem Header="Recent">
<NativeMenuItem.Menu>
<NativeMenu/>
</NativeMenuItem.Menu>
</NativeMenuItem>
<NativeMenuItem Header="Quit Avalonia" Gesture="CMD+Q"/>
</NativeMenu>
</NativeMenuItem.Menu>
</NativeMenuItem>
<NativeMenuItem Header="Quit Avalonia" Gesture="CMD+Q"/>
</NativeMenu>
</NativeMenu.Menu>
</Application>

2
samples/ControlCatalog/App.xaml.cs

@ -16,7 +16,7 @@ namespace ControlCatalog
Name = "Avalonia";
_recentMenu = (NativeMenu.GetMenu(this).Items[1] as NativeMenuItem).Menu;
_recentMenu = ((NativeMenu.GetMenu(this).Items[0] as NativeMenuItem).Menu.Items[1] as NativeMenuItem).Menu;
}
public void OnOpenClicked(object sender, EventArgs args)

Loading…
Cancel
Save