Browse Source

somewhat working updating menus.

pull/3762/head
Dan Walmsley 6 years ago
parent
commit
4e54fb2e46
  1. 20
      src/Avalonia.Native/AvaloniaNativeMenuExporter.cs
  2. 10
      src/Avalonia.Native/IAvnAppMenuItem.cs

20
src/Avalonia.Native/AvaloniaNativeMenuExporter.cs

@ -105,22 +105,30 @@ namespace Avalonia.Native
if (appMenu is null)
{
appMenu = _factory.CreateMenu();
_factory.SetAppMenu(appMenu);
}
var menuItem = menu.Parent;
var appMenuHolder = menuItem?.Parent;
if (menu.Parent is null)
{
menuItem = new NativeMenuItem();
}
menuItem.Parent = new NativeMenu();
if(appMenuHolder is null)
{
appMenuHolder = new NativeMenu();
appMenuHolder.Add(menuItem);
}
menuItem.Menu = menu;
appMenu.Update(this, _factory, menuItem.Parent);
appMenu.Update(this, _factory, appMenuHolder);
_factory.SetAppMenu(appMenu);
}
private void SetMenu(IAvnWindow avnWindow, NativeMenu menu)
@ -130,10 +138,12 @@ namespace Avalonia.Native
if (appMenu is null)
{
appMenu = _factory.CreateMenu();
avnWindow.SetMainMenu(appMenu);
}
appMenu.Update(this, _factory, menu);
avnWindow.SetMainMenu(appMenu);
}
}
}

10
src/Avalonia.Native/IAvnAppMenuItem.cs

@ -18,9 +18,12 @@ namespace Avalonia.Native.Interop
Managed.PropertyChanged += Item_PropertyChanged;
using (var buffer = new Utf8Buffer(item.Header))
if(!string.IsNullOrWhiteSpace(item.Header))
{
Title = buffer.DangerousGetHandle();
using (var buffer = new Utf8Buffer(item.Header))
{
Title = buffer.DangerousGetHandle();
}
}
if (item.Gesture != null)
@ -48,7 +51,8 @@ namespace Avalonia.Native.Interop
_subMenu = factory.CreateMenu();
}
_subMenu.Update(exporter, factory, item.Menu);
SetSubMenu(_subMenu);
_subMenu.Update(exporter, factory, item.Menu, item.Header);
}
if (item.Menu == null && _subMenu != null)

Loading…
Cancel
Save