Browse Source

fix win32native to managed menu exporter.

pull/8544/head
Dan Walmsley 4 years ago
parent
commit
961c693e34
  1. 2
      src/Avalonia.Controls/MenuItem.cs
  2. 13
      src/Windows/Avalonia.Win32/Win32NativeToManagedMenuExporter.cs

2
src/Avalonia.Controls/MenuItem.cs

@ -304,7 +304,7 @@ namespace Avalonia.Controls
bool IMenuItem.IsPointerOverSubMenu => _popup?.IsPointerOverPopup ?? false;
/// <inheritdoc/>
IMenuElement? IMenuItem.Parent => this.FindLogicalAncestorOfType<IMenuElement>();
IMenuElement? IMenuItem.Parent => Parent as IMenuElement;
protected override bool IsEnabledCore => base.IsEnabledCore && _commandCanExecute;

13
src/Windows/Avalonia.Win32/Win32NativeToManagedMenuExporter.cs

@ -1,4 +1,5 @@
using System.Collections.Generic;
using Avalonia.Collections;
using Avalonia.Controls;
using Avalonia.Controls.Platform;
@ -15,13 +16,15 @@ namespace Avalonia.Win32
_nativeMenu = nativeMenu;
}
private IEnumerable<MenuItem> Populate(NativeMenu nativeMenu)
private AvaloniaList<MenuItem> Populate(NativeMenu nativeMenu)
{
var result = new AvaloniaList<MenuItem>();
foreach (var menuItem in nativeMenu.Items)
{
if (menuItem is NativeMenuItemSeparator)
{
yield return new MenuItem { Header = "-" };
result.Add(new MenuItem { Header = "-" });
}
else if (menuItem is NativeMenuItem item)
{
@ -36,12 +39,14 @@ namespace Avalonia.Win32
newItem.Click += (_, __) => bridge.RaiseClicked();
}
yield return newItem;
result.Add(newItem);
}
}
return result;
}
public IEnumerable<MenuItem>? GetMenu()
public AvaloniaList<MenuItem>? GetMenu()
{
if (_nativeMenu != null)
{

Loading…
Cancel
Save