[nautilus] mime-actions: Remove blocking dialog for broken symbolic links
- From: António Fernandes <antoniof src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [nautilus] mime-actions: Remove blocking dialog for broken symbolic links
- Date: Tue, 28 Dec 2021 23:48:37 +0000 (UTC)
commit 8af45e55fcc347b05c4376128df5f248732d07d8
Author: Matthew Jakeman <mjakeman26 outlook co nz>
Date: Wed Dec 15 09:06:56 2021 +1300
mime-actions: Remove blocking dialog for broken symbolic links
Stop using the blocking dialog function `gtk_dialog_run`
when the user is prompted for action on a broken symbolic
link.
Switch to using `eel_show_simple_dialog` as this does not
use the old blocking api.
Part of #1992
src/nautilus-mime-actions.c | 52 +++++++++++++++++++++++++++++++++------------
1 file changed, 38 insertions(+), 14 deletions(-)
---
diff --git a/src/nautilus-mime-actions.c b/src/nautilus-mime-actions.c
index f57b94e6d..42e87b7f7 100644
--- a/src/nautilus-mime-actions.c
+++ b/src/nautilus-mime-actions.c
@@ -541,6 +541,32 @@ trash_or_delete_files (GtkWindow *parent_window,
g_list_free_full (locations, g_object_unref);
}
+typedef struct
+{
+ GtkWindow *parent_window;
+ NautilusFile *file;
+} TrashBrokenSymbolicLinkData;
+
+static void
+trash_symbolic_link_cb (GtkDialog *dialog,
+ gint response_id,
+ gpointer user_data)
+{
+ g_autofree TrashBrokenSymbolicLinkData *data = NULL;
+ GList file_as_list;
+
+ data = user_data;
+ gtk_widget_destroy (GTK_WIDGET (dialog));
+
+ if (response_id == GTK_RESPONSE_YES)
+ {
+ file_as_list.data = data->file;
+ file_as_list.next = NULL;
+ file_as_list.prev = NULL;
+ trash_or_delete_files (data->parent_window, &file_as_list, TRUE);
+ }
+}
+
static void
report_broken_symbolic_link (GtkWindow *parent_window,
NautilusFile *file)
@@ -550,8 +576,8 @@ report_broken_symbolic_link (GtkWindow *parent_window,
char *prompt;
char *detail;
GtkDialog *dialog;
- GList file_as_list;
- int response;
+ TrashBrokenSymbolicLinkData *data;
+
gboolean can_trash;
g_assert (nautilus_file_is_broken_symbolic_link (file));
@@ -582,15 +608,15 @@ report_broken_symbolic_link (GtkWindow *parent_window,
if (!can_trash)
{
- eel_run_simple_dialog (GTK_WIDGET (parent_window), FALSE, GTK_MESSAGE_WARNING,
- prompt, detail, _("_Cancel"), NULL);
+ dialog = eel_show_simple_dialog (GTK_WIDGET (parent_window), GTK_MESSAGE_WARNING,
+ prompt, detail, _("_Cancel"), NULL);
goto out;
}
dialog = eel_show_yes_no_dialog (prompt, detail, _("Mo_ve to Trash"), _("_Cancel"),
parent_window);
- gtk_dialog_set_default_response (dialog, GTK_RESPONSE_CANCEL);
+ gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_CANCEL);
/* Make this modal to avoid problems with reffing the view & file
* to keep them around in case the view changes, which would then
@@ -601,16 +627,14 @@ report_broken_symbolic_link (GtkWindow *parent_window,
* to change wildly, I don't want to mess with this now.
*/
- response = gtk_dialog_run (dialog);
- gtk_widget_destroy (GTK_WIDGET (dialog));
+ data = g_new0 (TrashBrokenSymbolicLinkData, 1);
+ data->parent_window = parent_window;
+ data->file = file;
- if (response == GTK_RESPONSE_YES)
- {
- file_as_list.data = file;
- file_as_list.next = NULL;
- file_as_list.prev = NULL;
- trash_or_delete_files (parent_window, &file_as_list, TRUE);
- }
+ g_signal_connect (G_OBJECT (dialog),
+ "response",
+ G_CALLBACK (trash_symbolic_link_cb),
+ data);
out:
g_free (prompt);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]