From: Calvin Walton Date: Sat, 20 May 2023 23:25:43 +0000 (-0400) Subject: filelauncher: Use ShowItems to show in File Manager X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~3^2~1^2~27 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=e435d8b93c2cf7af47b74c3a04d27ebf9439ca73;p=gtk4.git filelauncher: Use ShowItems to show in File Manager The non-portal fallback method for launching a file manager to show the file in its parent directory was incorrectly using the `ShowFolders` method (open a folder) instead of `ShowItems` (open the parent directory and show the file). The `show_item` function (previously `show_folder`) had an unused `callback` parameter; it has been removed and the type of the parameter containing the GTask has been renamed and now uses the correct type instead of gpointer to reduce the amount of casting required. Fixes GNOME/gtk#5842 --- diff --git a/gtk/gtkfilelauncher.c b/gtk/gtkfilelauncher.c index a4c7fc5379..8ff3a08ae4 100644 --- a/gtk/gtkfilelauncher.c +++ b/gtk/gtkfilelauncher.c @@ -229,9 +229,9 @@ open_done (GObject *source, #endif static void -show_folder_done (GObject *source, - GAsyncResult *result, - gpointer data) +show_item_done (GObject *source, + GAsyncResult *result, + gpointer data) { GDBusConnection *bus = G_DBUS_CONNECTION (source); GTask *task = G_TASK (data); @@ -261,11 +261,10 @@ show_folder_done (GObject *source, #define FILE_MANAGER_DBUS_PATH "/org/freedesktop/FileManager1" static void -show_folder (GtkWindow *parent, - const char *uri, - GCancellable *cancellable, - GAsyncReadyCallback callback, - gpointer user_data) +show_item (GtkWindow *parent, + const char *uri, + GCancellable *cancellable, + GTask *task) { GDBusConnection *bus; GVariantBuilder uris_builder = G_VARIANT_BUILDER_INIT (G_VARIANT_TYPE_STRING_ARRAY); @@ -274,10 +273,10 @@ show_folder (GtkWindow *parent, if (!bus) { - g_task_return_new_error (G_TASK (user_data), + g_task_return_new_error (task, GTK_DIALOG_ERROR, GTK_DIALOG_ERROR_FAILED, "Session bus not available"); - g_object_unref (G_TASK (user_data)); + g_object_unref (task); return; } @@ -287,14 +286,14 @@ show_folder (GtkWindow *parent, FILE_MANAGER_DBUS_NAME, FILE_MANAGER_DBUS_PATH, FILE_MANAGER_DBUS_IFACE, - "ShowFolders", + "ShowItems", g_variant_new ("(ass)", &uris_builder, ""), NULL, /* ignore returned type */ G_DBUS_CALL_FLAGS_NONE, -1, cancellable, - show_folder_done, - user_data); + show_item_done, + task); } G_GNUC_BEGIN_IGNORE_DEPRECATIONS @@ -470,7 +469,7 @@ gtk_file_launcher_open_containing_folder (GtkFileLauncher *self, { char *uri = g_file_get_uri (self->file); - show_folder (parent, uri, cancellable, show_folder_done, task); + show_item (parent, uri, cancellable, task); g_free (uri); }