chiark / gitweb /
GTK 3 port: stop getting default bg colour from the window style.
authorSimon Tatham <anakin@pobox.com>
Sat, 3 Oct 2015 11:28:15 +0000 (12:28 +0100)
committerSimon Tatham <anakin@pobox.com>
Sat, 3 Oct 2015 15:07:19 +0000 (16:07 +0100)
GTK3 window styles don't reliably provide one, so we have to fall back
to just making one up.

gtk.c

diff --git a/gtk.c b/gtk.c
index ac906d09d40ad2cd16f7d17c5390c286b15dcebe..4309f6dc509b407682bfdd932ca8d2d4b77b7220 100644 (file)
--- a/gtk.c
+++ b/gtk.c
@@ -186,10 +186,26 @@ void get_random_seed(void **randseed, int *randseedsize)
 
 void frontend_default_colour(frontend *fe, float *output)
 {
+#if !GTK_CHECK_VERSION(3,0,0)
+    /*
+     * Use the widget style's default background colour as the
+     * background for the puzzle drawing area.
+     */
     GdkColor col = gtk_widget_get_style(fe->window)->bg[GTK_STATE_NORMAL];
     output[0] = col.red / 65535.0;
     output[1] = col.green / 65535.0;
     output[2] = col.blue / 65535.0;
+#else
+    /*
+     * GTK 3 has decided that there's no such thing as a 'default
+     * background colour' any more, because widget styles might set
+     * the background to something more complicated like a background
+     * image. We don't want to get into overlaying our entire puzzle
+     * on an arbitrary background image, so we'll just make up a
+     * reasonable shade of grey.
+     */
+    output[0] = output[1] = output[2] = 0.9F;
+#endif
 }
 
 void gtk_status_bar(void *handle, char *text)