[gnome-robots/arnaudb/wip/gtk4: 30/36] Adapt to Dialog API.
- From: Arnaud B. <arnaudb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-robots/arnaudb/wip/gtk4: 30/36] Adapt to Dialog API.
- Date: Tue, 15 Sep 2020 14:29:39 +0000 (UTC)
commit 5d2e22b850c1bf977afcc0bb2d68a75a76d47521
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 f9f6188..3e362ef 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]