min()/max() macros conflict with ones defined by Windows (or at least MinGW)
[sgt/puzzles] / gtk.c
diff --git a/gtk.c b/gtk.c
index 81aeda1..deeb7a1 100644 (file)
--- a/gtk.c
+++ b/gtk.c
@@ -78,6 +78,7 @@ struct frontend {
     GtkWidget *cfgbox;
     char *paste_data;
     int paste_data_len;
+    char *laststatus;
 };
 
 void get_random_seed(void **randseed, int *randseedsize)
@@ -103,9 +104,14 @@ void status_bar(frontend *fe, char *text)
     assert(fe->statusbar);
 
     rewritten = midend_rewrite_statusbar(fe->me, text);
-    gtk_statusbar_pop(GTK_STATUSBAR(fe->statusbar), fe->statusctx);
-    gtk_statusbar_push(GTK_STATUSBAR(fe->statusbar), fe->statusctx, rewritten);
-    sfree(rewritten);
+    if (!fe->laststatus || strcmp(rewritten, fe->laststatus)) {
+       gtk_statusbar_pop(GTK_STATUSBAR(fe->statusbar), fe->statusctx);
+       gtk_statusbar_push(GTK_STATUSBAR(fe->statusbar), fe->statusctx, rewritten);
+       sfree(fe->laststatus);
+       fe->laststatus = rewritten;
+    } else {
+       sfree(rewritten);
+    }
 }
 
 void start_draw(frontend *fe)
@@ -1011,7 +1017,11 @@ static frontend *new_window(char *game_id, char **error)
 
     fe = snew(frontend);
 
+    fe->timer_active = FALSE;
+    fe->timer_id = -1;
+
     fe->me = midend_new(fe, &thegame);
+
     if (game_id) {
         *error = midend_game_id(fe->me, game_id);
         if (*error) {
@@ -1200,7 +1210,7 @@ static frontend *new_window(char *game_id, char **error)
     fe->fonts = NULL;
     fe->nfonts = fe->fontsize = 0;
 
-    fe->timer_active = FALSE;
+    fe->laststatus = NULL;
 
     fe->paste_data = NULL;
     fe->paste_data_len = 0;