summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVlad Zahorodnii <vlad.zahorodnii@kde.org>2022-10-20 19:33:15 +0300
committerCarlos Garnacho <carlosg@gnome.org>2023-01-27 19:20:53 +0000
commit65f03121a42307de403063c580ebf88f9413fe54 (patch)
treeb6ee42e044404451de1e61275860c229c1314808
parent09769193d751692b513ab2154400737674f8fd7e (diff)
downloadgtk+-65f03121a42307de403063c580ebf88f9413fe54.tar.gz
wayland: Fix handling of activation-token in org.freedesktop.Application requests
At the moment, GTK applications search for "desktop-startup-id" in the platform data on Wayland , but desktop environments such as plasma set "activation-token" property instead as indicated in the spec: activation-token: This should be a string of the same value as would be stored in the XDG_ACTIVATION_TOKEN environment variable, as specified by the XDG Activation protocol for Wayland. https://specifications.freedesktop.org/desktop-entry-spec/desktop-entry-spec-latest.html#dbus
-rw-r--r--gtk/gtkapplication-wayland.c4
-rw-r--r--gtk/gtkapplication.c8
2 files changed, 9 insertions, 3 deletions
diff --git a/gtk/gtkapplication-wayland.c b/gtk/gtkapplication-wayland.c
index 42a6e029c7..510d22656c 100644
--- a/gtk/gtkapplication-wayland.c
+++ b/gtk/gtkapplication-wayland.c
@@ -104,7 +104,9 @@ gtk_application_impl_wayland_before_emit (GtkApplicationImpl *impl,
{
const char *startup_notification_id = NULL;
- g_variant_lookup (platform_data, "desktop-startup-id", "&s", &startup_notification_id);
+ g_variant_lookup (platform_data, "activation-token", "&s", &startup_notification_id);
+ if (!startup_notification_id)
+ g_variant_lookup (platform_data, "desktop-startup-id", "&s", &startup_notification_id);
gdk_wayland_display_set_startup_notification_id (gdk_display_get_default (), startup_notification_id);
}
diff --git a/gtk/gtkapplication.c b/gtk/gtkapplication.c
index 0088a8d45d..d8dfd5c2d1 100644
--- a/gtk/gtkapplication.c
+++ b/gtk/gtkapplication.c
@@ -323,8 +323,12 @@ gtk_application_add_platform_data (GApplication *application,
startup_id = gdk_display_get_startup_notification_id (display);
if (startup_id && g_utf8_validate (startup_id, -1, NULL))
- g_variant_builder_add (builder, "{sv}", "desktop-startup-id",
- g_variant_new_string (startup_id));
+ {
+ g_variant_builder_add (builder, "{sv}", "activation-token",
+ g_variant_new_string (startup_id));
+ g_variant_builder_add (builder, "{sv}", "desktop-startup-id",
+ g_variant_new_string (startup_id));
+ }
}
}