From c17058c9aa86b4e00db59973eee423dff4e71ac2 Mon Sep 17 00:00:00 2001 From: Dan Walmsley Date: Thu, 26 Sep 2019 20:54:33 +0100 Subject: [PATCH] implement app menu osx. --- native/Avalonia.Native/src/OSX/menu.mm | 5 ++++- src/Avalonia.Native/AvaloniaNativeMenuExporter.cs | 9 ++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/native/Avalonia.Native/src/OSX/menu.mm b/native/Avalonia.Native/src/OSX/menu.mm index 909a504dc7..ca03c50e59 100644 --- a/native/Avalonia.Native/src/OSX/menu.mm +++ b/native/Avalonia.Native/src/OSX/menu.mm @@ -159,7 +159,10 @@ HRESULT AvnAppMenu::RemoveItem (IAvnAppMenuItem* item) 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; } diff --git a/src/Avalonia.Native/AvaloniaNativeMenuExporter.cs b/src/Avalonia.Native/AvaloniaNativeMenuExporter.cs index dc713df56c..1ae4a783d7 100644 --- a/src/Avalonia.Native/AvaloniaNativeMenuExporter.cs +++ b/src/Avalonia.Native/AvaloniaNativeMenuExporter.cs @@ -54,6 +54,8 @@ namespace Avalonia.Native { _factory = factory; _nativeWindow = nativeWindow; + + DoLayoutReset(); } public bool IsNativeMenuExported => _exported; @@ -107,7 +109,7 @@ namespace Avalonia.Native _menuItems.Clear(); - SetMenu(_nativeWindow, _menu.Items); + SetMenu(_nativeWindow, _menu?.Items); _exported = true; } @@ -236,6 +238,11 @@ namespace Avalonia.Native private void SetMenu(IAvnWindow avnWindow, ICollection menuItems) { + if (menuItems is null) + { + menuItems = new List(); + } + var menu = NativeMenu.GetMenu(Application.Current); if (menu != null)