Skip to content

Commit 5e1c48e

Browse files
authored
Merge pull request #8544 from AvaloniaUI/fixes/trayicon-interaction
Fix multiple enumeration of TrayIcon menu items on win32 causing broken tray icon menus
2 parents ed0ee65 + 961c693 commit 5e1c48e

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

src/Windows/Avalonia.Win32/Win32NativeToManagedMenuExporter.cs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
using System.Collections.Generic;
2+
using Avalonia.Collections;
23
using Avalonia.Controls;
34
using Avalonia.Controls.Platform;
45

@@ -15,13 +16,15 @@ public void SetNativeMenu(NativeMenu? nativeMenu)
1516
_nativeMenu = nativeMenu;
1617
}
1718

18-
private IEnumerable<MenuItem> Populate(NativeMenu nativeMenu)
19+
private AvaloniaList<MenuItem> Populate(NativeMenu nativeMenu)
1920
{
21+
var result = new AvaloniaList<MenuItem>();
22+
2023
foreach (var menuItem in nativeMenu.Items)
2124
{
2225
if (menuItem is NativeMenuItemSeparator)
2326
{
24-
yield return new MenuItem { Header = "-" };
27+
result.Add(new MenuItem { Header = "-" });
2528
}
2629
else if (menuItem is NativeMenuItem item)
2730
{
@@ -36,12 +39,14 @@ private IEnumerable<MenuItem> Populate(NativeMenu nativeMenu)
3639
newItem.Click += (_, __) => bridge.RaiseClicked();
3740
}
3841

39-
yield return newItem;
42+
result.Add(newItem);
4043
}
4144
}
45+
46+
return result;
4247
}
4348

44-
public IEnumerable<MenuItem>? GetMenu()
49+
public AvaloniaList<MenuItem>? GetMenu()
4550
{
4651
if (_nativeMenu != null)
4752
{

0 commit comments

Comments
 (0)