Browse Source

fix dbus menu icon loading courtesy of @danwalmsley

pull/6610/head
Jumar Macato 5 years ago
parent
commit
069a8d4ba5
  1. 19
      src/Avalonia.FreeDesktop/DBusMenuExporter.cs

19
src/Avalonia.FreeDesktop/DBusMenuExporter.cs

@ -8,6 +8,7 @@ using Avalonia.Controls;
using Avalonia.Controls.Platform; using Avalonia.Controls.Platform;
using Avalonia.FreeDesktop.DBusMenu; using Avalonia.FreeDesktop.DBusMenu;
using Avalonia.Input; using Avalonia.Input;
using Avalonia.Platform;
using Avalonia.Threading; using Avalonia.Threading;
using Tmds.DBus; using Tmds.DBus;
#pragma warning disable 1998 #pragma warning disable 1998
@ -66,6 +67,7 @@ namespace Avalonia.FreeDesktop
SetNativeMenu(new NativeMenu()); SetNativeMenu(new NativeMenu());
Init(); Init();
} }
async void Init() async void Init()
{ {
try try
@ -274,17 +276,24 @@ namespace Avalonia.FreeDesktop
if (item.ToggleType != NativeMenuItemToggleType.None) if (item.ToggleType != NativeMenuItemToggleType.None)
return item.IsChecked ? 1 : 0; return item.IsChecked ? 1 : 0;
} }
if (name == "icon-data") if (name == "icon-data")
{ {
if (item.Icon != null) if (item.Icon != null)
{ {
var ms = new MemoryStream(); var loader = AvaloniaLocator.Current.GetService<IPlatformIconLoader>();
item.Icon.Save(ms);
return ms.ToArray(); if (loader != null)
{
var icon = loader.LoadIcon(item.Icon.PlatformImpl.Item);
using var ms = new MemoryStream();
icon.Save(ms);
return ms.ToArray();
}
} }
} }
if (name == "children-display") if (name == "children-display")
return menu != null ? "submenu" : null; return menu != null ? "submenu" : null;
} }

Loading…
Cancel
Save