Browse Source

implement app menu osx.

pull/2978/head
Dan Walmsley 7 years ago
parent
commit
c17058c9aa
  1. 5
      native/Avalonia.Native/src/OSX/menu.mm
  2. 9
      src/Avalonia.Native/AvaloniaNativeMenuExporter.cs

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

@ -159,7 +159,10 @@ HRESULT AvnAppMenu::RemoveItem (IAvnAppMenuItem* item)
HRESULT AvnAppMenu::SetTitle (void* utf8String) HRESULT AvnAppMenu::SetTitle (void* utf8String)
{ {
[_native setTitle:[NSString stringWithUTF8String:(const char*)utf8String]]; if (utf8String != nullptr)
{
[_native setTitle:[NSString stringWithUTF8String:(const char*)utf8String]];
}
return S_OK; return S_OK;
} }

9
src/Avalonia.Native/AvaloniaNativeMenuExporter.cs

@ -54,6 +54,8 @@ namespace Avalonia.Native
{ {
_factory = factory; _factory = factory;
_nativeWindow = nativeWindow; _nativeWindow = nativeWindow;
DoLayoutReset();
} }
public bool IsNativeMenuExported => _exported; public bool IsNativeMenuExported => _exported;
@ -107,7 +109,7 @@ namespace Avalonia.Native
_menuItems.Clear(); _menuItems.Clear();
SetMenu(_nativeWindow, _menu.Items); SetMenu(_nativeWindow, _menu?.Items);
_exported = true; _exported = true;
} }
@ -236,6 +238,11 @@ namespace Avalonia.Native
private void SetMenu(IAvnWindow avnWindow, ICollection<NativeMenuItem> menuItems) private void SetMenu(IAvnWindow avnWindow, ICollection<NativeMenuItem> menuItems)
{ {
if (menuItems is null)
{
menuItems = new List<NativeMenuItem>();
}
var menu = NativeMenu.GetMenu(Application.Current); var menu = NativeMenu.GetMenu(Application.Current);
if (menu != null) if (menu != null)

Loading…
Cancel
Save