Browse Source

Merge pull request #8544 from AvaloniaUI/fixes/trayicon-interaction

Fix multiple enumeration of TrayIcon menu items on win32 causing broken tray icon menus
release/0.10.17
Dan Walmsley 4 years ago
parent
commit
dc871e70d9
  1. 13
      src/Windows/Avalonia.Win32/Win32NativeToManagedMenuExporter.cs

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