From: Matthias Clasen Date: Wed, 4 Jan 2023 13:36:47 +0000 (-0500) Subject: Pass an activation token to OpenURI X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~8^2~101^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=6efd1a9dad49b42db778bdc07020dfcf8845e2c8;p=gtk4.git Pass an activation token to OpenURI The OpenURI portal can take an activation_token nowadays. So it give one. --- diff --git a/gtk/gopenuriportal.c b/gtk/gopenuriportal.c index b90771c51c..834d8655a5 100644 --- a/gtk/gopenuriportal.c +++ b/gtk/gopenuriportal.c @@ -261,6 +261,7 @@ static void open_uri (GFile *file, gboolean open_folder, const char *parent_window, + const char *activation_token, GAsyncReadyCallback callback, gpointer user_data) { @@ -306,6 +307,9 @@ open_uri (GFile *file, g_variant_builder_add (&opt_builder, "{sv}", "handle_token", g_variant_new_string (token)); g_free (token); + if (activation_token) + g_variant_builder_add (&opt_builder, "{sv}", "activation_token", g_variant_new_string (activation_token)); + opts = g_variant_builder_end (&opt_builder); if (g_file_is_native (file)) @@ -408,8 +412,28 @@ window_handle_exported (GtkWindow *window, gpointer user_data) { OpenUriData *data = user_data; + GdkDisplay *display; + GAppLaunchContext *context; + char *activation_token = NULL; + + if (window) + display = gtk_widget_get_display (GTK_WIDGET (window)); + else + display = gdk_display_get_default (); + + /* FIXME + * Call the vfunc directly since g_app_launch_context_get_startup_notify_id + * has NULL checks. + * + * We should have a more direct way to do this. + */ + context = G_APP_LAUNCH_CONTEXT (gdk_display_get_app_launch_context (display)); + activation_token = G_APP_LAUNCH_CONTEXT_GET_CLASS (context)->get_startup_notify_id (context, NULL, NULL); + g_object_unref (context); + + open_uri (data->file, data->open_folder, handle, activation_token, open_uri_done, data); - open_uri (data->file, data->open_folder, handle, open_uri_done, data); + g_free (activation_token); } void