diff options
author | Matthew Jakeman <mjakeman26@outlook.co.nz> | 2021-12-24 01:02:33 +1300 |
---|---|---|
committer | António Fernandes <antoniof@gnome.org> | 2021-12-28 23:04:20 +0000 |
commit | 67812f918d0162de0bc7cf0325d7eedc2d3f85bb (patch) | |
tree | 7882eb22df1fc166b74cd6e8b2415c92ebbc1be3 /eel | |
parent | 2f9e48c2c71a31e684bcafb92028ab63f862d2f4 (diff) | |
download | nautilus-67812f918d0162de0bc7cf0325d7eedc2d3f85bb.tar.gz |
eel-stock-dialogs: Add eel_show_simple_dialog
Extracts the creation of simple dialogs to a new function
that does not depend on gtk_dialog_run. It is the caller's
responsibility to obtain a response from the dialog.
Part of #1992
Diffstat (limited to 'eel')
-rw-r--r-- | eel/eel-stock-dialogs.c | 57 | ||||
-rw-r--r-- | eel/eel-stock-dialogs.h | 7 |
2 files changed, 51 insertions, 13 deletions
diff --git a/eel/eel-stock-dialogs.c b/eel/eel-stock-dialogs.c index 499af99d5..9929e4064 100644 --- a/eel/eel-stock-dialogs.c +++ b/eel/eel-stock-dialogs.c @@ -318,19 +318,16 @@ eel_timed_wait_stop (EelCancelCallback cancel_callback, timed_wait_free (wait); } -int -eel_run_simple_dialog (GtkWidget *parent, - gboolean ignore_close_box, - GtkMessageType message_type, - const char *primary_text, - const char *secondary_text, - ...) +static GtkDialog * +eel_show_simple_dialogv (GtkWidget *parent, + GtkMessageType message_type, + const char *primary_text, + const char *secondary_text, + va_list button_title_args) { - va_list button_title_args; const char *button_title; GtkWidget *dialog; GtkWidget *top_widget, *chosen_parent; - int result; int response_id; /* Parent it if asked to. */ @@ -356,7 +353,6 @@ eel_run_simple_dialog (GtkWidget *parent, "secondary-text", secondary_text, NULL); - va_start (button_title_args, secondary_text); response_id = 0; while (1) { @@ -369,17 +365,54 @@ eel_run_simple_dialog (GtkWidget *parent, gtk_dialog_set_default_response (GTK_DIALOG (dialog), response_id); response_id++; } + + + gtk_widget_show_all (dialog); + + return GTK_DIALOG (dialog); +} + +GtkDialog * +eel_show_simple_dialog (GtkWidget *parent, + GtkMessageType message_type, + const char *primary_text, + const char *secondary_text, + ...) +{ + va_list button_title_args; + GtkDialog *dialog; + + va_start (button_title_args, secondary_text); + dialog = eel_show_simple_dialogv (parent, message_type, primary_text, secondary_text, button_title_args); + va_end (button_title_args); + + return dialog; +} + +int +eel_run_simple_dialog (GtkWidget *parent, + gboolean ignore_close_box, + GtkMessageType message_type, + const char *primary_text, + const char *secondary_text, + ...) +{ + va_list button_title_args; + GtkDialog *dialog; + int result; + + va_start (button_title_args, secondary_text); + dialog = eel_show_simple_dialogv (parent, message_type, primary_text, secondary_text, button_title_args); va_end (button_title_args); /* Run it. */ - gtk_widget_show (dialog); result = gtk_dialog_run (GTK_DIALOG (dialog)); while ((result == GTK_RESPONSE_NONE || result == GTK_RESPONSE_DELETE_EVENT) && ignore_close_box) { gtk_widget_show (GTK_WIDGET (dialog)); result = gtk_dialog_run (GTK_DIALOG (dialog)); } - gtk_widget_destroy (dialog); + gtk_widget_destroy (GTK_WIDGET (dialog)); return result; } diff --git a/eel/eel-stock-dialogs.h b/eel/eel-stock-dialogs.h index 792686152..cea8e1fed 100644 --- a/eel/eel-stock-dialogs.h +++ b/eel/eel-stock-dialogs.h @@ -40,6 +40,11 @@ void eel_timed_wait_stop (EelCancelCallback cancel_callbac gpointer callback_data); /* Basic dialog with buttons. */ +GtkDialog *eel_show_simple_dialog (GtkWidget *parent, + GtkMessageType message_type, + const char *primary_text, + const char *secondary_text, + ...); int eel_run_simple_dialog (GtkWidget *parent, gboolean ignore_close_box, GtkMessageType message_type, @@ -72,4 +77,4 @@ GtkDialog *eel_create_question_dialog (const char *primary_text, int response_one, const char *answer_two, int response_two, - GtkWindow *parent);
\ No newline at end of file + GtkWindow *parent); |