[gtk/ebassi/run-dialog-run: 110/116] tests: Remove gtk_dialog_run()



commit 1c8aa8c930facbe25327638c9d6a897d2d483118
Author: Emmanuele Bassi <ebassi gnome org>
Date:   Thu Apr 30 15:32:38 2020 +0100

    tests: Remove gtk_dialog_run()
    
    Either use the "response" signal for dialogs that are already modal, or
    use an explicit nested loop for tests that rely on the response id being
    available in sequence.

 tests/print-editor.c    | 58 ++++++++++++++++++++++++++++++----------------
 tests/testappchooser.c  | 37 ++++++++++++++++++++++--------
 tests/testcombochange.c | 35 ++++++++++++++++++++--------
 tests/testdialog.c      | 61 +++++++++++++++++++++----------------------------
 tests/testfilechooser.c | 12 ++++++----
 tests/testwindowsize.c  | 21 +++++++++++------
 6 files changed, 138 insertions(+), 86 deletions(-)
---
diff --git a/tests/print-editor.c b/tests/print-editor.c
index 7b8ca15e15..37ea8cf7ca 100644
--- a/tests/print-editor.c
+++ b/tests/print-editor.c
@@ -495,13 +495,26 @@ activate_preview (GSimpleAction *action,
   print_or_preview (action, GTK_PRINT_OPERATION_ACTION_PREVIEW);
 }
 
+static void
+on_save_response (GtkWidget *dialog,
+                  int        response)
+{
+  if (response == GTK_RESPONSE_OK)
+    {
+      GFile *save_filename = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (dialog));
+      save_file (save_filename);
+      g_object_unref (save_filename);
+    }
+
+  gtk_window_destroy (GTK_WINDOW (dialog));
+}
+
 static void
 activate_save_as (GSimpleAction *action,
                   GVariant      *parameter,
                   gpointer       user_data)
 {
   GtkWidget *dialog;
-  gint response;
 
   dialog = gtk_file_chooser_dialog_new ("Select file",
                                         GTK_WINDOW (main_window),
@@ -510,16 +523,12 @@ activate_save_as (GSimpleAction *action,
                                         "_Save", GTK_RESPONSE_OK,
                                         NULL);
   gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
-  response = gtk_dialog_run (GTK_DIALOG (dialog));
-
-  if (response == GTK_RESPONSE_OK)
-    {
-      GFile *save_filename = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (dialog));
-      save_file (save_filename);
-      g_object_unref (save_filename);
-    }
+  gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
+  gtk_widget_show (dialog);
 
-  gtk_window_destroy (GTK_WINDOW (dialog));
+  g_signal_connect (dialog, "response",
+                    G_CALLBACK (on_save_response),
+                    NULL);
 }
 
 static void
@@ -533,13 +542,26 @@ activate_save (GSimpleAction *action,
     save_file (filename);
 }
 
+static void
+on_open_response (GtkWidget *dialog,
+                  int        response)
+{
+  if (response == GTK_RESPONSE_OK)
+    {
+      GFile *open_filename = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (dialog));
+      load_file (open_filename);
+      g_object_unref (open_filename);
+    }
+
+  gtk_window_destroy (GTK_WINDOW (dialog));
+}
+
 static void
 activate_open (GSimpleAction *action,
                GVariant      *parameter,
                gpointer       user_data)
 {
   GtkWidget *dialog;
-  gint response;
 
   dialog = gtk_file_chooser_dialog_new ("Select file",
                                         GTK_WINDOW (main_window),
@@ -548,16 +570,12 @@ activate_open (GSimpleAction *action,
                                         "_Open", GTK_RESPONSE_OK,
                                         NULL);
   gtk_dialog_set_default_response (GTK_DIALOG (dialog), GTK_RESPONSE_OK);
-  response = gtk_dialog_run (GTK_DIALOG (dialog));
-
-  if (response == GTK_RESPONSE_OK)
-    {
-      GFile *open_filename = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (dialog));
-      load_file (open_filename);
-      g_object_unref (open_filename);
-    }
+  gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
+  gtk_widget_show (dialog);
 
-  gtk_window_destroy (GTK_WINDOW (dialog));
+  g_signal_connect (dialog, "response",
+                    G_CALLBACK (on_open_response),
+                    NULL);
 }
 
 static void
diff --git a/tests/testappchooser.c b/tests/testappchooser.c
index 281f96e9bb..63ec9bfdee 100644
--- a/tests/testappchooser.c
+++ b/tests/testappchooser.c
@@ -125,12 +125,32 @@ display_dialog (void)
   gtk_widget_show (dialog);
 }
 
+static void
+on_open_response (GtkWidget *file_chooser,
+                  int        response)
+{
+  if (response == GTK_RESPONSE_ACCEPT)
+    {
+      char *path;
+
+      file = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (file_chooser));
+      path = g_file_get_path (file);
+
+      gtk_button_set_label (GTK_BUTTON (file_l), path);
+
+      g_free (path);
+    }
+
+  gtk_window_destroy (GTK_WINDOW (file_chooser));
+
+  gtk_widget_set_sensitive (open, TRUE);
+}
+
 static void
 button_clicked (GtkButton *b,
                 gpointer   user_data)
 {
   GtkWidget *w;
-  gchar *path;
 
   w = gtk_file_chooser_dialog_new ("Select file",
                                    GTK_WINDOW (toplevel),
@@ -139,16 +159,13 @@ button_clicked (GtkButton *b,
                                    "_Open", GTK_RESPONSE_ACCEPT,
                                    NULL);
 
-  gtk_dialog_run (GTK_DIALOG (w));
-  file = gtk_file_chooser_get_file (GTK_FILE_CHOOSER (w));
-  path = g_file_get_path (file);
-  gtk_button_set_label (GTK_BUTTON (file_l), path);
-
-  gtk_window_destroy (GTK_WINDOW (w));
+  gtk_window_set_modal (GTK_WINDOW (w), TRUE);
 
-  gtk_widget_set_sensitive (open, TRUE);
+  g_signal_connect (w, "response",
+                    G_CALLBACK (on_open_response),
+                    NULL);
 
-  g_free (path);
+  gtk_window_present (GTK_WINDOW (w));
 }
 
 static void
@@ -180,7 +197,7 @@ main (int argc, char **argv)
                    w1, 0, 0, 1, 1);
 
   file_l = gtk_button_new ();
-  path = g_build_filename (g_get_current_dir (), "apple-red.png", NULL);
+  path = g_build_filename (GTK_SRCDIR, "apple-red.png", NULL);
   file = g_file_new_for_path (path);
   gtk_button_set_label (GTK_BUTTON (file_l), path);
   g_free (path);
diff --git a/tests/testcombochange.c b/tests/testcombochange.c
index 29cefc662a..a4a6ec9b56 100644
--- a/tests/testcombochange.c
+++ b/tests/testcombochange.c
@@ -191,7 +191,7 @@ int
 main (int argc, char **argv)
 {
   GtkWidget *content_area;
-  GtkWidget *dialog;
+  GtkWidget *window;
   GtkWidget *scrolled_window;
   GtkWidget *hbox;
   GtkWidget *button_vbox;
@@ -206,13 +206,12 @@ main (int argc, char **argv)
 
   model = gtk_list_store_new (1, G_TYPE_STRING);
   contents = g_array_new (FALSE, FALSE, sizeof (char));
-  
-  dialog = gtk_dialog_new_with_buttons ("GtkComboBox model changes",
-                                       NULL, 0,
-                                       "_Close", GTK_RESPONSE_CLOSE,
-                                       NULL);
 
-  content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
+  window = gtk_window_new ();
+  gtk_window_set_title (GTK_WINDOW (window), "ComboBox Change");
+
+  content_area = gtk_box_new (GTK_ORIENTATION_VERTICAL, 12);
+  gtk_window_set_child (GTK_WINDOW (window), content_area);
 
   hbox = gtk_box_new (GTK_ORIENTATION_HORIZONTAL, 12);
   gtk_box_append (GTK_BOX (content_area), hbox);
@@ -243,7 +242,7 @@ main (int argc, char **argv)
   button_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 8);
   gtk_box_append (GTK_BOX (hbox), button_vbox);
 
-  gtk_window_set_default_size (GTK_WINDOW (dialog), 500, 300);
+  gtk_window_set_default_size (GTK_WINDOW (window), 500, 300);
 
   button = gtk_button_new_with_label ("Insert");
   gtk_box_append (GTK_BOX (button_vbox), button);
@@ -261,8 +260,24 @@ main (int argc, char **argv)
   gtk_box_append (GTK_BOX (button_vbox), button);
   g_signal_connect (button, "clicked", G_CALLBACK (on_animate), NULL);
 
-  gtk_widget_show (dialog);
-  gtk_dialog_run (GTK_DIALOG (dialog));
+  GtkWidget *close_button = gtk_button_new_with_mnemonic ("_Close");
+  gtk_widget_set_hexpand (close_button, TRUE);
+  gtk_box_append (GTK_BOX (content_area), close_button);
+
+  gtk_widget_show (window);
+
+  GMainLoop *loop = g_main_loop_new (NULL, FALSE);
+
+  g_signal_connect_swapped (close_button, "clicked",
+                            G_CALLBACK (gtk_window_destroy),
+                            window);
+  g_signal_connect_swapped (window, "destroy",
+                            G_CALLBACK (g_main_loop_quit),
+                            loop);
+
+  g_main_loop_run (loop);
+
+  g_main_loop_unref (loop);
 
   return 0;
 }
diff --git a/tests/testdialog.c b/tests/testdialog.c
index c78ec11336..2d32d1a8a5 100644
--- a/tests/testdialog.c
+++ b/tests/testdialog.c
@@ -16,8 +16,8 @@ show_message_dialog1 (GtkWindow *parent)
   gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
                                             "Unhandled error message: SSH program unexpectedly exited");
 
-  gtk_dialog_run (GTK_DIALOG (dialog));
-  gtk_window_destroy (GTK_WINDOW (dialog));
+  gtk_window_present (GTK_WINDOW (dialog));
+  g_signal_connect (dialog, "response", G_CALLBACK (gtk_window_destroy), NULL);
 }
 
 static void
@@ -33,8 +33,8 @@ show_message_dialog1a (GtkWindow *parent)
                                                GTK_BUTTONS_OK,
                                                "The system network services are not compatible with this 
version."));
 
-  gtk_dialog_run (GTK_DIALOG (dialog));
-  gtk_window_destroy (GTK_WINDOW (dialog));
+  gtk_window_present (GTK_WINDOW (dialog));
+  g_signal_connect (dialog, "response", G_CALLBACK (gtk_window_destroy), NULL);
 }
 
 static void
@@ -56,8 +56,8 @@ show_message_dialog2 (GtkWindow *parent)
                           "Empty Wastebasket", GTK_RESPONSE_OK,
                           NULL);  
 
-  gtk_dialog_run (GTK_DIALOG (dialog));
-  gtk_window_destroy (GTK_WINDOW (dialog));
+  gtk_window_present (GTK_WINDOW (dialog));
+  g_signal_connect (dialog, "response", G_CALLBACK (gtk_window_destroy), NULL);
 }
 
 static void
@@ -66,9 +66,8 @@ show_color_chooser (GtkWindow *parent)
   GtkWidget *dialog;
 
   dialog = gtk_color_chooser_dialog_new ("Builtin", parent);
-
-  gtk_dialog_run (GTK_DIALOG (dialog));
-  gtk_window_destroy (GTK_WINDOW (dialog));
+  gtk_window_present (GTK_WINDOW (dialog));
+  g_signal_connect (dialog, "response", G_CALLBACK (gtk_window_destroy), NULL);
 }
 
 static void
@@ -81,8 +80,8 @@ show_color_chooser_generic (GtkWindow *parent)
                          "transient-for", parent,
                          NULL);
 
-  gtk_dialog_run (GTK_DIALOG (dialog));
-  gtk_window_destroy (GTK_WINDOW (dialog));
+  gtk_window_present (GTK_WINDOW (dialog));
+  g_signal_connect (dialog, "response", G_CALLBACK (gtk_window_destroy), NULL);
 }
 
 static void
@@ -119,9 +118,8 @@ show_dialog (GtkWindow *parent)
                                         NULL);
 
   add_content (dialog);
-
-  gtk_dialog_run (GTK_DIALOG (dialog));
-  gtk_window_destroy (GTK_WINDOW (dialog));
+  gtk_window_present (GTK_WINDOW (dialog));
+  g_signal_connect (dialog, "response", G_CALLBACK (gtk_window_destroy), NULL);
 }
 
 static void
@@ -135,9 +133,8 @@ show_dialog_with_header (GtkWindow *parent)
                                         NULL);
 
   add_content (dialog);
-
-  gtk_dialog_run (GTK_DIALOG (dialog));
-  gtk_window_destroy (GTK_WINDOW (dialog));
+  gtk_window_present (GTK_WINDOW (dialog));
+  g_signal_connect (dialog, "response", G_CALLBACK (gtk_window_destroy), NULL);
 }
 
 static void
@@ -152,9 +149,8 @@ show_dialog_with_buttons (GtkWindow *parent)
                                         NULL);
 
   add_content (dialog);
-
-  gtk_dialog_run (GTK_DIALOG (dialog));
-  gtk_window_destroy (GTK_WINDOW (dialog));
+  gtk_window_present (GTK_WINDOW (dialog));
+  g_signal_connect (dialog, "response", G_CALLBACK (gtk_window_destroy), NULL);
 }
 
 static void
@@ -169,9 +165,8 @@ show_dialog_with_header_buttons (GtkWindow *parent)
                                         NULL);
 
   add_content (dialog);
-
-  gtk_dialog_run (GTK_DIALOG (dialog));
-  gtk_window_destroy (GTK_WINDOW (dialog));
+  gtk_window_present (GTK_WINDOW (dialog));
+  g_signal_connect (dialog, "response", G_CALLBACK (gtk_window_destroy), NULL);
 }
 
 static void
@@ -183,9 +178,8 @@ show_dialog_with_header_buttons2 (GtkWindow *parent)
   builder = gtk_builder_new_from_file ("dialog.ui");
   dialog = (GtkWidget *)gtk_builder_get_object (builder, "dialog");
   g_object_unref (builder);
-
-  gtk_dialog_run (GTK_DIALOG (dialog));
-  gtk_window_destroy (GTK_WINDOW (dialog));
+  gtk_window_present (GTK_WINDOW (dialog));
+  g_signal_connect (dialog, "response", G_CALLBACK (gtk_window_destroy), NULL);
 }
 
 typedef struct {
@@ -231,9 +225,8 @@ show_dialog_from_template (GtkWindow *parent)
                          NULL);
 
   add_content (dialog);
-
-  gtk_dialog_run (GTK_DIALOG (dialog));
-  gtk_window_destroy (GTK_WINDOW (dialog));
+  gtk_window_present (dialog);
+  g_signal_connect (dialog, "response", G_CALLBACK (gtk_window_destroy), NULL);
 }
 
 static void
@@ -252,9 +245,8 @@ show_dialog_flex_template (GtkWindow *parent)
                          NULL);
 
   add_content (dialog);
-
-  gtk_dialog_run (GTK_DIALOG (dialog));
-  gtk_window_destroy (GTK_WINDOW (dialog));
+  gtk_window_present (GTK_WINDOW (dialog));
+  g_signal_connect (dialog, "response", G_CALLBACK (gtk_window_destroy), NULL);
 }
 
 typedef struct {
@@ -305,9 +297,8 @@ show_dialog_from_template_with_header (GtkWindow *parent)
 
   add_buttons (dialog);
   add_content (dialog);
-
-  gtk_dialog_run (GTK_DIALOG (dialog));
-  gtk_window_destroy (GTK_WINDOW (dialog));
+  gtk_window_present (GTK_WINDOW (dialog));
+  g_signal_connect (dialog, "response", G_CALLBACK (gtk_window_destroy), NULL);
 }
 
 int
diff --git a/tests/testfilechooser.c b/tests/testfilechooser.c
index 0cb5875ab6..71c0358af3 100644
--- a/tests/testfilechooser.c
+++ b/tests/testfilechooser.c
@@ -156,8 +156,10 @@ set_current_folder (GtkFileChooser *chooser,
                                       GTK_BUTTONS_CLOSE,
                                       "Could not set the folder to %s",
                                       name);
-      gtk_dialog_run (GTK_DIALOG (dialog));
-      gtk_window_destroy (GTK_WINDOW (dialog));
+      gtk_widget_show (dialog);
+      g_signal_connect (dialog, "response",
+                        G_CALLBACK (gtk_window_destroy),
+                        NULL);
     }
   g_object_unref (file);
 }
@@ -191,8 +193,10 @@ set_filename (GtkFileChooser *chooser,
                                       GTK_BUTTONS_CLOSE,
                                       "Could not select %s",
                                       name);
-      gtk_dialog_run (GTK_DIALOG (dialog));
-      gtk_window_destroy (GTK_WINDOW (dialog));
+      gtk_widget_show (dialog);
+      g_signal_connect (dialog, "response",
+                        G_CALLBACK (gtk_window_destroy),
+                        NULL);
     }
   g_object_unref (file);
 }
diff --git a/tests/testwindowsize.c b/tests/testwindowsize.c
index 961843cc05..ae6b2fcaa5 100644
--- a/tests/testwindowsize.c
+++ b/tests/testwindowsize.c
@@ -65,10 +65,10 @@ show_dialog (void)
   gtk_widget_realize (dialog);
   g_signal_connect (gtk_native_get_surface (GTK_NATIVE (dialog)), "size-changed",
                     G_CALLBACK (size_changed_cb), label);
-
-  gtk_dialog_run (GTK_DIALOG (dialog));
-
-  gtk_window_destroy (GTK_WINDOW (dialog));
+  g_signal_connect (dialog, "response",
+                    G_CALLBACK (gtk_window_destroy),
+                    NULL);
+  gtk_widget_show (dialog);
 }
 
 static void
@@ -127,6 +127,16 @@ create_window (void)
   gtk_grid_attach (GTK_GRID (grid), button, 2, 4, 1, 1);
 
   gtk_widget_show (window);
+
+  GMainLoop *loop = g_main_loop_new (NULL, FALSE);
+
+  g_signal_connect_swapped (window, "destroy",
+                            G_CALLBACK (g_main_loop_quit),
+                            loop);
+
+  g_main_loop_run (loop);
+
+  g_main_loop_unref (loop);
 }
 
 int
@@ -136,8 +146,5 @@ main (int argc, char *argv[])
 
   create_window ();
 
-  while (TRUE)
-    g_main_context_iteration (NULL, TRUE);
-
   return 0;
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]