tFix for GTK+ client opening multiple high score dialogs - vaccinewars - be a d… | |
git clone git://src.adamsgaard.dk/vaccinewars | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 1daa175d87470250d9ffc2ff2f449221d184262c | |
parent 3bef9f814962b5ded538a1b2fa67a5a3bce1dcf9 | |
Author: Ben Webb <[email protected]> | |
Date: Mon, 10 Sep 2001 19:28:02 +0000 | |
Fix for GTK+ client opening multiple high score dialogs | |
Diffstat: | |
M src/gtk_client.c | 13 ++++++++++++- | |
1 file changed, 12 insertions(+), 1 deletion(-) | |
--- | |
diff --git a/src/gtk_client.c b/src/gtk_client.c | |
t@@ -431,12 +431,16 @@ void HandleClientMessage(char *pt,Player *Play) { | |
struct HiScoreDiaStruct { | |
GtkWidget *dialog,*table,*vbox; | |
}; | |
-static struct HiScoreDiaStruct HiScoreDialog; | |
+static struct HiScoreDiaStruct HiScoreDialog = { NULL,NULL,NULL }; | |
void PrepareHighScoreDialog(void) { | |
/* Creates an empty dialog to display high scores */ | |
GtkWidget *dialog,*vbox,*hsep,*table; | |
+/* Make sure the server doesn't fool us into creating | |
+ multiple dialogs */ | |
+ if (HiScoreDialog.dialog) return; | |
+ | |
HiScoreDialog.dialog=dialog=gtk_window_new(GTK_WINDOW_DIALOG); | |
/* Title of the GTK+ high score dialog */ | |
t@@ -469,6 +473,8 @@ void AddScoreToDialog(char *Data) { | |
int index,slen; | |
gboolean bold; | |
+ if (!HiScoreDialog.dialog) return; | |
+ | |
cp=Data; | |
index=GetNextInt(&cp,0); | |
if (!cp || strlen(cp)<3) return; | |
t@@ -556,6 +562,8 @@ void CompleteHighScoreDialog(gboolean AtEnd) { | |
GtkWidget *OKButton,*dialog; | |
dialog=HiScoreDialog.dialog; | |
+ if (!HiScoreDialog.dialog) return; | |
+ | |
/* Caption of the "OK" button in dialogs */ | |
OKButton=gtk_button_new_with_label(_("OK")); | |
gtk_signal_connect_object(GTK_OBJECT(OKButton),"clicked", | |
t@@ -571,6 +579,9 @@ void CompleteHighScoreDialog(gboolean AtEnd) { | |
GTK_WIDGET_SET_FLAGS(OKButton,GTK_CAN_DEFAULT); | |
gtk_widget_grab_default(OKButton); | |
gtk_widget_show(OKButton); | |
+ | |
+/* OK, we're done - allow the creation of new high score dialogs */ | |
+ HiScoreDialog.dialog=NULL; | |
} | |
void PrintMessage(char *text) { |