+#if GTK_CHECK_VERSION(3,0,0)
+ /*
+ * This is used to get round an annoying lack of GTK notification
+ * message. If we request a window resize with
+ * gtk_window_resize(), we normally get back a "configure" event
+ * on the window and on its drawing area, and we respond to the
+ * latter by doing an appropriate resize of the puzzle. If the
+ * window is maximised, so that gtk_window_resize() _doesn't_
+ * change its size, then that configure event never shows up. But
+ * if we requested the resize in response to a change of puzzle
+ * parameters (say, the user selected a differently-sized preset
+ * from the menu), then we would still like to be _notified_ that
+ * the window size was staying the same, so that we can respond by
+ * choosing an appropriate tile size for the new puzzle preset in
+ * the existing window size.
+ *
+ * Fortunately, in GTK 3, we may not get a "configure" event on
+ * the drawing area in this situation, but we still get a
+ * "size_allocate" event on the whole window (which, in other
+ * situations when we _do_ get a "configure" on the area, turns up
+ * second). So we treat _that_ event as indicating that if the
+ * "configure" event hasn't already shown up then it's not going
+ * to arrive.
+ *
+ * This flag is where we bookkeep this system. On
+ * gtk_window_resize we set this flag to true; the area's
+ * configure handler sets it back to false; then if that doesn't
+ * happen, the window's size_allocate handler does a fallback
+ * puzzle resize when it sees this flag still set to true.
+ */
+ int awaiting_resize_ack;
+#endif