open_uri (GFile *file,
gboolean open_folder,
const char *parent_window,
+ const char *activation_token,
GAsyncReadyCallback callback,
gpointer user_data)
{
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))
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