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; bool IMenuItem.IsPointerOverSubMenu => _popup?.IsPointerOverPopup ?? false;
/// <inheritdoc/> /// <inheritdoc/>
IMenuElement? IMenuItem.Parent => this.FindLogicalAncestorOfType<IMenuElement>(); IMenuElement? IMenuItem.Parent => Parent as IMenuElement;
protected override bool IsEnabledCore => base.IsEnabledCore && _commandCanExecute; protected override bool IsEnabledCore => base.IsEnabledCore && _commandCanExecute;

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

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

Loading…
Cancel
Save