summaryrefslogtreecommitdiff
path: root/eel
diff options
context:
space:
mode:
authorMatthew Jakeman <mjakeman26@outlook.co.nz>2021-12-24 01:02:33 +1300
committerAntónio Fernandes <antoniof@gnome.org>2021-12-28 23:04:20 +0000
commit67812f918d0162de0bc7cf0325d7eedc2d3f85bb (patch)
tree7882eb22df1fc166b74cd6e8b2415c92ebbc1be3 /eel
parent2f9e48c2c71a31e684bcafb92028ab63f862d2f4 (diff)
downloadnautilus-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.c57
-rw-r--r--eel/eel-stock-dialogs.h7
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);