chiark / gitweb /
Don't refresh backing store on a no-op configure event.
[sgt-puzzles.git] / gtk.c
diff --git a/gtk.c b/gtk.c
index 3e8df06eb01bab665bd1e747673707ccec79dc27..0189d26e51e49fb74ad3fcedd585b6136767835c 100644 (file)
--- a/gtk.c
+++ b/gtk.c
@@ -1199,18 +1199,24 @@ static gint configure_area(GtkWidget *widget,
     frontend *fe = (frontend *)data;
     int x, y;
 
-    if (backing_store_ok(fe))
-       teardown_backing_store(fe);
-
-    x = fe->w = event->width;
-    y = fe->h = event->height;
-    midend_size(fe->me, &x, &y, TRUE);
-    fe->pw = x;
-    fe->ph = y;
-    fe->ox = (fe->w - fe->pw) / 2;
-    fe->oy = (fe->h - fe->ph) / 2;
-
-    setup_backing_store(fe);
+    x = event->width;
+    y = event->height;
+
+    if (x != fe->w || y != fe->h || !backing_store_ok(fe)) {
+        if (backing_store_ok(fe))
+            teardown_backing_store(fe);
+
+        fe->w = x;
+        fe->h = y;
+        midend_size(fe->me, &x, &y, TRUE);
+        fe->pw = x;
+        fe->ph = y;
+        fe->ox = (fe->w - fe->pw) / 2;
+        fe->oy = (fe->h - fe->ph) / 2;
+
+        setup_backing_store(fe);
+    }
+
     midend_force_redraw(fe->me);
 
     return TRUE;