Browse Source

sigh... icons still not working here

pull/6610/head
Jumar Macato 5 years ago
parent
commit
e2dc0ead8b
  1. 74
      src/Avalonia.FreeDesktop/DBusSystemTray/SNIDBus.cs
  2. 2
      src/Avalonia.X11/X11TrayIconImpl.cs

74
src/Avalonia.FreeDesktop/DBusSystemTray/SNIDBus.cs

@ -23,7 +23,7 @@ namespace Avalonia.FreeDesktop.DBusSystemTray
private static int GetTID() private static int GetTID()
{ {
trayinstanceID = (int)new Random().Next(0, 100); trayinstanceID = 4;
return trayinstanceID; return trayinstanceID;
} }
@ -65,13 +65,12 @@ namespace Avalonia.FreeDesktop.DBusSystemTray
// await Task.Delay(2000); // await Task.Delay(2000);
// tx.InvalidateAll(); // tx.InvalidateAll();
// }); // });
} }
public async void Dispose() public async void Dispose()
{ {
var con = DBusHelper.Connection; var con = DBusHelper.Connection;
if (await con.UnregisterServiceAsync(_sysTraySrvName)) if (await con.UnregisterServiceAsync(_sysTraySrvName))
{ {
con.UnregisterObject(_statusNotifierItem); con.UnregisterObject(_statusNotifierItem);
@ -107,8 +106,10 @@ namespace Avalonia.FreeDesktop.DBusSystemTray
props = new StatusNotifierItemProperties props = new StatusNotifierItemProperties
{ {
Title = "Avalonia Test Tray", Title = "Avalonia Test Tray",
Status = "Avalonia Test Tray", Status = "Avalonia Test Tray",
Id = "Avalonia Test Tray" Id = "Avalonia Test Tray",
AttentionIconPixmap = new[] { new Pixmap(0, 0, new byte[] { }), new Pixmap(0, 0, new byte[] { }) },
// IconPixmap = new[] { new Pixmap(1, 1, new byte[] { 0xFF, 0xFF, 0xFF, 0xFF }) }
}; };
} }
@ -123,21 +124,21 @@ namespace Avalonia.FreeDesktop.DBusSystemTray
public async Task SecondaryActivateAsync(int X, int Y) public async Task SecondaryActivateAsync(int X, int Y)
{ {
//throw new NotImplementedException(); //throw new NotImplementedException();5
} }
public async Task ScrollAsync(int Delta, string Orientation) public async Task ScrollAsync(int Delta, string Orientation)
{ {
} }
public void InvalidateAll() public void InvalidateAll()
{ {
OnTitleChanged?.Invoke(); OnTitleChanged?.Invoke();
OnIconChanged?.Invoke(); OnIconChanged?.Invoke();
OnOverlayIconChanged?.Invoke(); OnOverlayIconChanged?.Invoke();
OnAttentionIconChanged?.Invoke();
} }
public async Task<IDisposable> WatchNewTitleAsync(Action handler, Action<Exception> onError = null) public async Task<IDisposable> WatchNewTitleAsync(Action handler, Action<Exception> onError = null)
{ {
OnTitleChanged += handler; OnTitleChanged += handler;
@ -216,8 +217,8 @@ namespace Avalonia.FreeDesktop.DBusSystemTray
public void SetIcon(Pixmap pixmap) public void SetIcon(Pixmap pixmap)
{ {
props.IconPixmap = pixmap; props.IconPixmap = new[] { pixmap };
InvalidateAll(); InvalidateAll();
} }
} }
@ -372,32 +373,49 @@ namespace Avalonia.FreeDesktop.DBusSystemTray
public string IconName; public string IconName;
public Pixmap IconPixmap; public Pixmap[] IconPixmap;
public string OverlayIconName; public string OverlayIconName;
public Pixmap OverlayIconPixmap; public Pixmap[] OverlayIconPixmap;
public string AttentionIconName; public string AttentionIconName;
public Pixmap AttentionIconPixmap; public Pixmap[] AttentionIconPixmap;
public string AttentionMovieName; public string AttentionMovieName;
public (string, Pixmap, string, string) ToolTip; public ToolTip ToolTip;
} }
public struct Pixmap public readonly struct ToolTip
{ {
private readonly int Width; public readonly string First;
private readonly int Height; public readonly Pixmap[] Second;
private readonly byte[] Data; public readonly string Third;
public readonly string Fourth;
public Pixmap(int width, int height, byte[] data)
{ public ToolTip(string first, Pixmap[] second, string third, string fourth)
Width = width; {
Height = height; First = first;
Data = data; Second = second;
} Third = third;
} Fourth = fourth;
}
}
public readonly struct Pixmap
{
public readonly int Width;
public readonly int Height;
public readonly byte[] Data;
public Pixmap(int width, int height, byte[] data)
{
Width = width;
Height = height;
Data = data;
}
}
} }

2
src/Avalonia.X11/X11TrayIconImpl.cs

@ -77,8 +77,6 @@ namespace Avalonia.X11
sni.SetIcon(new Pixmap(w, h, byteBuf)); sni.SetIcon(new Pixmap(w, h, byteBuf));
} }
} }
;
} }
public void SetIsVisible(bool visible) public void SetIsVisible(bool visible)

Loading…
Cancel
Save