chiark / gitweb /
Fix switching to a larger puzzle size under GTK 2.
authorSimon Tatham <anakin@pobox.com>
Sat, 3 Oct 2015 16:57:01 +0000 (17:57 +0100)
committerSimon Tatham <anakin@pobox.com>
Sat, 3 Oct 2015 17:01:18 +0000 (18:01 +0100)
Commit 8b491946e had a bug: configure_area stopped doing most of its
work if the new size already matched fe->w and fe->h, but in fact the
GTK2 resize_fe() _already_ set up fe->w and fe->h for the new size. I
managed not to notice, because I checked it all worked on GTK 3 but
only tested resizing to a _smaller_ puzzle on GTK 2. Ahem.

Now we don't change fe->w and fe->h at all until configure_area is
called. Also, we initialise them to dummy values at setup time, so
that configure_area won't compare the new size with uninitialised
data.

gtk.c

diff --git a/gtk.c b/gtk.c
index 27eb5da4c5a44c53ace46ff3961f49c8e76855e6..559ff827ad8928225172febcdde054b422b86609 100644 (file)
--- a/gtk.c
+++ b/gtk.c
@@ -1889,8 +1889,6 @@ static void resize_fe(frontend *fe)
 #if GTK_CHECK_VERSION(3,0,0)
     gtk_window_resize_to_geometry(GTK_WINDOW(fe->window), x, y);
 #else
-    fe->w = x;
-    fe->h = y;
     fe->drawing_area_shrink_pending = FALSE;
     gtk_drawing_area_size(GTK_DRAWING_AREA(fe->area), x, y);
     {
@@ -2582,6 +2580,8 @@ static frontend *new_window(char *arg, int argtype, char **error)
         gtk_window_set_geometry_hints(GTK_WINDOW(fe->window), fe->area,
                                       &geom, GDK_HINT_BASE_SIZE);
     }
+    fe->w = -1;
+    fe->h = -1;
     get_size(fe, &x, &y);
 #if GTK_CHECK_VERSION(3,0,0)
     gtk_window_set_default_geometry(GTK_WINDOW(fe->window), x, y);
@@ -2589,8 +2589,6 @@ static frontend *new_window(char *arg, int argtype, char **error)
     fe->drawing_area_shrink_pending = FALSE;
     gtk_drawing_area_size(GTK_DRAWING_AREA(fe->area), x, y);
 #endif
-    fe->w = x;
-    fe->h = y;
 
     gtk_box_pack_end(vbox, fe->area, TRUE, TRUE, 0);