[gnome-robots/arnaudb/wip/gtk4: 31/33] Adapt to Dialog API.



commit a22b42bae0d584bee6dc310f01f0438a3e7c3dbf
Author: Arnaud Bonatti <arnaud bonatti gmail com>
Date:   Mon May 25 21:29:46 2020 +0200

    Adapt to Dialog API.

 src/game.c         |  8 ++++++--
 src/gnome-robots.c | 46 +++++++++++++++++++++++++++++++++++++---------
 src/properties.c   | 25 +++++++++++++------------
 3 files changed, 56 insertions(+), 23 deletions(-)
---
diff --git a/src/game.c b/src/game.c
index b3adb63..f3f3d01 100644
--- a/src/game.c
+++ b/src/game.c
@@ -112,8 +112,12 @@ message_box (gchar * msg)
 
   box = gtk_message_dialog_new (GTK_WINDOW (window), GTK_DIALOG_MODAL,
                                 GTK_MESSAGE_INFO, GTK_BUTTONS_OK, "%s", msg);
-  gtk_dialog_run (GTK_DIALOG (box));
-  gtk_widget_destroy (box);
+
+  g_signal_connect_swapped (box,
+                            "response",
+                            G_CALLBACK (gtk_window_destroy),
+                            box);
+  gtk_widget_show (box);
 }
 
 /**
diff --git a/src/gnome-robots.c b/src/gnome-robots.c
index eadeed0..244947f 100644
--- a/src/gnome-robots.c
+++ b/src/gnome-robots.c
@@ -235,11 +235,19 @@ quit_cb (GSimpleAction *action, GVariant *parameter, gpointer user_data)
   quit_game ();
 }
 
+static void
+confirmation_dialog_response_cb (GtkDialog *dialog, gint response_id, gpointer user_data)
+{
+  gtk_window_destroy (GTK_WINDOW (dialog));
+
+  if (response_id == GTK_RESPONSE_ACCEPT)
+    start_new_game ();
+}
+
 static void
 new_game_cb (GSimpleAction *action, GVariant *parameter, gpointer user_data)
 {
   GtkWidget *dialog;
-  int ret;
 
   dialog = gtk_message_dialog_new (GTK_WINDOW (window), GTK_DIALOG_MODAL,
                                    GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE,
@@ -250,11 +258,12 @@ new_game_cb (GSimpleAction *action, GVariant *parameter, gpointer user_data)
                           _("_New Game"), GTK_RESPONSE_ACCEPT,
                           NULL);
 
-  ret = gtk_dialog_run (GTK_DIALOG (dialog));
-  gtk_widget_destroy (dialog);
+  g_signal_connect_swapped (dialog,
+                            "response",
+                            G_CALLBACK (confirmation_dialog_response_cb),
+                            dialog);
 
-  if (ret == GTK_RESPONSE_ACCEPT)
-    start_new_game ();
+  gtk_widget_show (dialog);
 }
 
 static void
@@ -351,6 +360,13 @@ create_category_from_key (const char *key, gpointer user_data)
   return games_scores_category_new (key, name);
 }
 
+static void
+error_dialog_response_cb (GtkDialog *dialog, gint response_id, gpointer user_data)
+{
+  gtk_window_destroy (GTK_WINDOW (dialog));
+  exit (1);
+}
+
 static void
 activate (GtkApplication *app, gpointer user_data)
 {
@@ -468,10 +484,16 @@ activate (GtkApplication *app, gpointer user_data)
                                                       "<b>%s</b>\n\n%s",
                                                       _("No game data could be found."),
                                                       _("The program Robots was unable to find any valid 
game configuration files. Please check that the program is installed correctly."));
+
     gtk_window_set_resizable (GTK_WINDOW (errordialog), FALSE);
 
-    gtk_dialog_run (GTK_DIALOG (errordialog));
-    exit (1);
+    g_signal_connect_swapped (errordialog,
+                              "response",
+                              G_CALLBACK (error_dialog_response_cb),
+                              errordialog);
+
+    gtk_widget_show (errordialog);
+    return;
   }
 
   load_properties ();
@@ -485,8 +507,14 @@ activate (GtkApplication *app, gpointer user_data)
                                                       "<b>%s</b>\n\n%s",
                                                       _("Some graphics files are missing or corrupt."),
                                                       _("The program Robots was unable to load all the 
necessary graphics files. Please check that the program is installed correctly."));
-    gtk_dialog_run (GTK_DIALOG (errordialog));
-    exit (1);
+
+    g_signal_connect_swapped (errordialog,
+                              "response",
+                              G_CALLBACK (error_dialog_response_cb),
+                              errordialog);
+
+    gtk_widget_show (errordialog);
+    return;
   }
 
   init_sound ();
diff --git a/src/properties.c b/src/properties.c
index 2fc6d0a..6f97ec9 100644
--- a/src/properties.c
+++ b/src/properties.c
@@ -96,7 +96,7 @@ static GnobotsProperties properties;
 static void load_keys (void);
 static void apply_changes (void);
 static void apply_cb (GtkWidget *, gpointer);
-static gboolean delete_cb (GtkWidget *, gpointer);
+static void destroy_cb (GtkWidget *, gpointer);
 static void pmap_selection (GtkWidget *, gpointer);
 static void type_selection (GtkWidget *, gpointer);
 static void safe_cb (GtkWidget *, gpointer);
@@ -127,7 +127,7 @@ apply_changes (void)
 
 /**
  * apply_cb
- * @w: widget
+ * @widget: widget
  * @data: callback data
  *
  * Description:
@@ -137,29 +137,28 @@ apply_changes (void)
  * TRUE if the event was handled
  **/
 static void
-apply_cb (GtkWidget * w, gpointer data)
+apply_cb (GtkWidget * widget, gpointer data)
 {
   apply_changes ();
 
-  gtk_widget_destroy (propbox);
+  gtk_window_destroy (GTK_WINDOW (propbox));
   propbox = NULL;
 }
 
 
 /**
  * destroy_cb
- * @w: widget
+ * @widget: widget
  * @data: callback data
  *
  * Description:
  * handles property-box destruction messages
  **/
-static gboolean
-delete_cb (GtkWidget * w, gpointer data)
+static void
+destroy_cb (GtkWidget * widget, gpointer data)
 {
+  gtk_window_destroy (GTK_WINDOW (propbox));
   propbox = NULL;
-
-  return FALSE;
 }
 
 /**
@@ -396,7 +395,7 @@ show_properties_dialog (void)
   gtk_box_set_spacing (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (propbox))), 2);
   /* Set up notebook and add it to hbox of the gtk_dialog */
   g_signal_connect (G_OBJECT (propbox), "destroy",
-                    G_CALLBACK (gtk_widget_destroyed), &propbox);
+                    G_CALLBACK (gtk_window_destroy), &propbox);
 
   notebook = gtk_notebook_new ();
 /*  gtk_container_set_border_width (GTK_CONTAINER (notebook), 5);*/
@@ -521,10 +520,12 @@ show_properties_dialog (void)
   gtk_notebook_append_page (GTK_NOTEBOOK (notebook), kpage, label);
 
 
-  g_signal_connect (G_OBJECT (propbox), "delete-event",
-                    G_CALLBACK (delete_cb), NULL);
+  g_signal_connect (G_OBJECT (propbox), "destroy",
+                    G_CALLBACK (destroy_cb), NULL);
   g_signal_connect (G_OBJECT (propbox), "response",
                     G_CALLBACK (apply_cb), NULL);
+
+  gtk_widget_show (propbox);
 }
 
 /**


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