tConsolidation of all "IsShowing" code into a single function, SetShowing. Basic protection against multiple instances added to DealDrugs dialog. - vaccinewars - be a doctor and try to vaccinate the world
(HTM) git clone git://src.adamsgaard.dk/vaccinewars
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 05904f5f9ab2e24f493f8193c3685bc72a0a12c7
(DIR) parent 5923e75b8649a3a8f822de277a58e03160fc0510
(HTM) Author: Ben Webb <ben@salilab.org>
Date: Sat, 6 Apr 2002 19:55:32 +0000
Consolidation of all "IsShowing" code into a single function, SetShowing.
Basic protection against multiple instances added to DealDrugs dialog.
Diffstat:
M src/gui_client/gtk_client.c | 46 ++++++++++++++-----------------
1 file changed, 20 insertions(+), 26 deletions(-)
---
(DIR) diff --git a/src/gui_client/gtk_client.c b/src/gui_client/gtk_client.c
t@@ -79,6 +79,7 @@ static gboolean InGame = FALSE;
static GtkWidget *FightDialog = NULL, *SpyReportsDialog;
static gboolean IsShowingPlayerList = FALSE, IsShowingTalkList = FALSE;
static gboolean IsShowingInventory = FALSE, IsShowingGunShop = FALSE;
+static gboolean IsShowingDealDrugs = FALSE;
static void display_intro(GtkWidget *widget, gpointer data);
static void QuitGame(GtkWidget *widget, gpointer data);
t@@ -127,6 +128,7 @@ static void SpyOnPlayer(GtkWidget *widget, gpointer data);
static void ErrandDialog(gint ErrandType);
static void SackBitch(GtkWidget *widget, gpointer data);
static void DestroyShowing(GtkWidget *widget, gpointer data);
+static void SetShowing(GtkWidget *window, gboolean *showing);
static gint DisallowDelete(GtkWidget *widget, GdkEvent * event,
gpointer data);
static void GunShopDialog(void);
t@@ -276,12 +278,7 @@ void ListInventory(GtkWidget *widget, gpointer data)
/* Title of inventory window */
gtk_window_set_title(GTK_WINDOW(window), _("Inventory"));
- IsShowingInventory = TRUE;
- gtk_window_set_modal(GTK_WINDOW(window), FALSE);
- gtk_object_set_data(GTK_OBJECT(window), "IsShowing",
- (gpointer)&IsShowingInventory);
- gtk_signal_connect(GTK_OBJECT(window), "destroy",
- GTK_SIGNAL_FUNC(DestroyShowing), NULL);
+ SetShowing(window, &IsShowingInventory);
gtk_window_set_transient_for(GTK_WINDOW(window),
GTK_WINDOW(ClientData.window));
t@@ -1536,6 +1533,8 @@ void DealDrugs(GtkWidget *widget, gpointer data)
gint DrugInd, i, SelIndex, FirstInd;
gboolean DrugIndOK;
+ g_assert(!IsShowingDealDrugs);
+
/* Action in 'Deal Drugs' dialog - "Buy/Sell/Drop Drugs" */
if (data == BT_BUY)
Action = _("Buy");
t@@ -1586,6 +1585,7 @@ void DealDrugs(GtkWidget *widget, gpointer data)
text = g_string_new(NULL);
accel_group = gtk_accel_group_new();
+
dialog = DealDialog.dialog = gtk_window_new(GTK_WINDOW_TOPLEVEL);
gtk_window_set_title(GTK_WINDOW(dialog), Action);
gtk_window_add_accel_group(GTK_WINDOW(dialog), accel_group);
t@@ -1593,6 +1593,7 @@ void DealDrugs(GtkWidget *widget, gpointer data)
gtk_window_set_modal(GTK_WINDOW(dialog), TRUE);
gtk_window_set_transient_for(GTK_WINDOW(dialog),
GTK_WINDOW(ClientData.window));
+ SetShowing(dialog, &IsShowingDealDrugs);
vbox = gtk_vbox_new(FALSE, 7);
t@@ -2532,15 +2533,10 @@ void ListPlayers(GtkWidget *widget, gpointer data)
gtk_window_set_default_size(GTK_WINDOW(dialog), 200, 180);
gtk_container_set_border_width(GTK_CONTAINER(dialog), 7);
- IsShowingPlayerList = TRUE;
gtk_window_set_modal(GTK_WINDOW(dialog), FALSE);
- gtk_object_set_data(GTK_OBJECT(dialog), "IsShowing",
- (gpointer)&IsShowingPlayerList);
- gtk_signal_connect(GTK_OBJECT(dialog), "destroy",
- GTK_SIGNAL_FUNC(DestroyShowing), NULL);
-
gtk_window_set_transient_for(GTK_WINDOW(dialog),
GTK_WINDOW(ClientData.window));
+ SetShowing(dialog, &IsShowingPlayerList);
vbox = gtk_vbox_new(FALSE, 7);
t@@ -2635,15 +2631,10 @@ void TalkDialog(gboolean TalkToAll)
gtk_window_set_default_size(GTK_WINDOW(dialog), 200, 190);
gtk_container_set_border_width(GTK_CONTAINER(dialog), 7);
- IsShowingTalkList = TRUE;
gtk_window_set_modal(GTK_WINDOW(dialog), FALSE);
- gtk_object_set_data(GTK_OBJECT(dialog), "IsShowing",
- (gpointer)&IsShowingTalkList);
- gtk_signal_connect(GTK_OBJECT(dialog), "destroy",
- GTK_SIGNAL_FUNC(DestroyShowing), NULL);
-
gtk_window_set_transient_for(GTK_WINDOW(dialog),
GTK_WINDOW(ClientData.window));
+ SetShowing(dialog, &IsShowingTalkList);
vbox = gtk_vbox_new(FALSE, 7);
t@@ -2951,12 +2942,19 @@ void CreateInventory(GtkWidget *hbox, gchar *Objects,
g_string_free(text, TRUE);
}
+void SetShowing(GtkWidget *window, gboolean *showing)
+{
+ g_assert(showing);
+
+ *showing = TRUE;
+ gtk_signal_connect(GTK_OBJECT(window), "destroy",
+ GTK_SIGNAL_FUNC(DestroyShowing), (gpointer)showing);
+}
+
void DestroyShowing(GtkWidget *widget, gpointer data)
{
- gboolean *IsShowing;
+ gboolean *IsShowing = (gboolean *)data;
- IsShowing =
- (gboolean *)gtk_object_get_data(GTK_OBJECT(widget), "IsShowing");
if (IsShowing)
*IsShowing = FALSE;
}
t@@ -3048,11 +3046,7 @@ void GunShopDialog(void)
gtk_window_set_transient_for(GTK_WINDOW(window),
GTK_WINDOW(ClientData.window));
gtk_container_set_border_width(GTK_CONTAINER(window), 7);
- IsShowingGunShop = TRUE;
- gtk_object_set_data(GTK_OBJECT(window), "IsShowing",
- (gpointer)&IsShowingGunShop);
- gtk_signal_connect(GTK_OBJECT(window), "destroy",
- GTK_SIGNAL_FUNC(DestroyShowing), NULL);
+ SetShowing(window, &IsShowingGunShop);
vbox = gtk_vbox_new(FALSE, 7);