From 43aff2d6805cd6085e6e942a5eef86e312eb972b Mon Sep 17 00:00:00 2001 From: affederaffe <68356204+affederaffe@users.noreply.github.com> Date: Mon, 28 Aug 2023 20:11:28 +0200 Subject: [PATCH 1/3] Fix inconsistent naming --- src/Avalonia.FreeDesktop/Avalonia.FreeDesktop.csproj | 11 +++++++---- .../{DBusMenu.xml => com.canonical.dbusmenu.xml} | 0 .../DBusXml/{DBus.xml => org.freedesktop.DBus.xml} | 0 ...otifierItem.xml => org.kde.StatusNotifierItem.xml} | 0 ...rWatcher.xml => org.kde.StatusNotifierWatcher.xml} | 0 5 files changed, 7 insertions(+), 4 deletions(-) rename src/Avalonia.FreeDesktop/DBusXml/{DBusMenu.xml => com.canonical.dbusmenu.xml} (100%) rename src/Avalonia.FreeDesktop/DBusXml/{DBus.xml => org.freedesktop.DBus.xml} (100%) rename src/Avalonia.FreeDesktop/DBusXml/{StatusNotifierItem.xml => org.kde.StatusNotifierItem.xml} (100%) rename src/Avalonia.FreeDesktop/DBusXml/{StatusNotifierWatcher.xml => org.kde.StatusNotifierWatcher.xml} (100%) diff --git a/src/Avalonia.FreeDesktop/Avalonia.FreeDesktop.csproj b/src/Avalonia.FreeDesktop/Avalonia.FreeDesktop.csproj index 779c41757a..8b472b7722 100644 --- a/src/Avalonia.FreeDesktop/Avalonia.FreeDesktop.csproj +++ b/src/Avalonia.FreeDesktop/Avalonia.FreeDesktop.csproj @@ -26,19 +26,22 @@ - - + + + + - - + + + diff --git a/src/Avalonia.FreeDesktop/DBusXml/DBusMenu.xml b/src/Avalonia.FreeDesktop/DBusXml/com.canonical.dbusmenu.xml similarity index 100% rename from src/Avalonia.FreeDesktop/DBusXml/DBusMenu.xml rename to src/Avalonia.FreeDesktop/DBusXml/com.canonical.dbusmenu.xml diff --git a/src/Avalonia.FreeDesktop/DBusXml/DBus.xml b/src/Avalonia.FreeDesktop/DBusXml/org.freedesktop.DBus.xml similarity index 100% rename from src/Avalonia.FreeDesktop/DBusXml/DBus.xml rename to src/Avalonia.FreeDesktop/DBusXml/org.freedesktop.DBus.xml diff --git a/src/Avalonia.FreeDesktop/DBusXml/StatusNotifierItem.xml b/src/Avalonia.FreeDesktop/DBusXml/org.kde.StatusNotifierItem.xml similarity index 100% rename from src/Avalonia.FreeDesktop/DBusXml/StatusNotifierItem.xml rename to src/Avalonia.FreeDesktop/DBusXml/org.kde.StatusNotifierItem.xml diff --git a/src/Avalonia.FreeDesktop/DBusXml/StatusNotifierWatcher.xml b/src/Avalonia.FreeDesktop/DBusXml/org.kde.StatusNotifierWatcher.xml similarity index 100% rename from src/Avalonia.FreeDesktop/DBusXml/StatusNotifierWatcher.xml rename to src/Avalonia.FreeDesktop/DBusXml/org.kde.StatusNotifierWatcher.xml From d40ce406fc134c7e89a9d4396257a3c1c41a8e0f Mon Sep 17 00:00:00 2001 From: affederaffe <68356204+affederaffe@users.noreply.github.com> Date: Mon, 28 Aug 2023 20:11:47 +0200 Subject: [PATCH 2/3] Fix vala-panel global menu --- src/Avalonia.FreeDesktop/DBusMenuExporter.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Avalonia.FreeDesktop/DBusMenuExporter.cs b/src/Avalonia.FreeDesktop/DBusMenuExporter.cs index 77f9d31273..c0ffbc400e 100644 --- a/src/Avalonia.FreeDesktop/DBusMenuExporter.cs +++ b/src/Avalonia.FreeDesktop/DBusMenuExporter.cs @@ -58,6 +58,7 @@ namespace Avalonia.FreeDesktop private DBusMenuExporterImpl() { + BackingProperties.Version = 4; BackingProperties.Status = string.Empty; BackingProperties.TextDirection = string.Empty; BackingProperties.IconThemePath = Array.Empty(); From cc9cc71e23a48ecb369696b033c5b21fbd1c9342 Mon Sep 17 00:00:00 2001 From: affederaffe <68356204+affederaffe@users.noreply.github.com> Date: Thu, 31 Aug 2023 02:26:50 +0200 Subject: [PATCH 3/3] Use Tmds.DBus.SourceGenerator 0.0.10: - Fix global menu - Optimize byte[] variants (e.g icons) --- src/Avalonia.FreeDesktop/Avalonia.FreeDesktop.csproj | 2 +- src/Avalonia.FreeDesktop/DBusMenuExporter.cs | 6 ++---- src/Avalonia.FreeDesktop/DBusSystemDialog.cs | 6 +++--- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/src/Avalonia.FreeDesktop/Avalonia.FreeDesktop.csproj b/src/Avalonia.FreeDesktop/Avalonia.FreeDesktop.csproj index 8b472b7722..28a288f22a 100644 --- a/src/Avalonia.FreeDesktop/Avalonia.FreeDesktop.csproj +++ b/src/Avalonia.FreeDesktop/Avalonia.FreeDesktop.csproj @@ -13,7 +13,7 @@ - + diff --git a/src/Avalonia.FreeDesktop/DBusMenuExporter.cs b/src/Avalonia.FreeDesktop/DBusMenuExporter.cs index c0ffbc400e..b9a11b865c 100644 --- a/src/Avalonia.FreeDesktop/DBusMenuExporter.cs +++ b/src/Avalonia.FreeDesktop/DBusMenuExporter.cs @@ -281,11 +281,9 @@ namespace Avalonia.FreeDesktop if (loader is not null) { var icon = loader.LoadIcon(item.Icon.PlatformImpl.Item); - using var ms = new MemoryStream(); icon.Save(ms); - return new DBusVariantItem("ay", - new DBusArrayItem(DBusType.Byte, ms.ToArray().Select(static x => new DBusByteItem(x)))); + return new DBusVariantItem("ay", new DBusByteArrayItem(ms.ToArray())); } } } @@ -326,7 +324,7 @@ namespace Avalonia.FreeDesktop children[c] = new DBusVariantItem("(ia{sv}av)", new DBusStructItem(new DBusItem[] { new DBusInt32Item(layout.Item1), - new DBusArrayItem(DBusType.DictEntry, layout.Item2.Select(static x => new DBusDictEntryItem(new DBusStringItem(x.Key), x.Value))), + new DBusArrayItem(DBusType.DictEntry, layout.Item2.Select(static x => new DBusDictEntryItem(new DBusStringItem(x.Key), x.Value)).ToArray()), new DBusArrayItem(DBusType.Variant, layout.Item3) })); } diff --git a/src/Avalonia.FreeDesktop/DBusSystemDialog.cs b/src/Avalonia.FreeDesktop/DBusSystemDialog.cs index f6964ab92a..096093347b 100644 --- a/src/Avalonia.FreeDesktop/DBusSystemDialog.cs +++ b/src/Avalonia.FreeDesktop/DBusSystemDialog.cs @@ -88,7 +88,7 @@ namespace Avalonia.FreeDesktop if (options.SuggestedFileName is { } currentName) chooserOptions.Add("current_name", new DBusVariantItem("s", new DBusStringItem(currentName))); if (options.SuggestedStartLocation?.TryGetLocalPath() is { } folderPath) - chooserOptions.Add("current_folder", new DBusVariantItem("ay", new DBusArrayItem(DBusType.Byte, Encoding.UTF8.GetBytes(folderPath).Select(static x => new DBusByteItem(x))))); + chooserOptions.Add("current_folder", new DBusVariantItem("ay", new DBusByteArrayItem(Encoding.UTF8.GetBytes(folderPath)))); objectPath = await _fileChooser.SaveFileAsync(parentWindow, options.Title ?? string.Empty, chooserOptions); var request = new OrgFreedesktopPortalRequest(_connection, "org.freedesktop.portal.Desktop", objectPath); @@ -149,7 +149,7 @@ namespace Avalonia.FreeDesktop if (fileTypes is null) return null; - var filters = new DBusArrayItem(DBusType.Struct, new List()); + var filters = new List(); foreach (var fileType in fileTypes) { @@ -173,7 +173,7 @@ namespace Avalonia.FreeDesktop })); } - return filters.Count > 0 ? new DBusVariantItem("a(sa(us))", filters) : null; + return filters.Count > 0 ? new DBusVariantItem("a(sa(us))", new DBusArrayItem(DBusType.Struct, filters)) : null; } } }