---
gtktempmap.c | 27 ++++++++++++++++++++++++++-
1 file changed, 26 insertions(+), 1 deletion(-)
diff --git a/gtktempmap.c b/gtktempmap.c
index 2161e98f..05905d98 100644
--- a/gtktempmap.c
+++ b/gtktempmap.c
@@ -182,17 +182,42 @@ static void
UpdateStyle(GtkWidget * pw, const float r)
{
- GtkStyle *ps = gtk_style_copy(gtk_widget_get_style(pw));
double *gbval;
gbval = g_malloc(sizeof(*gbval));
*gbval = 1.0 - (double)r;
g_object_set_data_full(G_OBJECT(pw), "gbval", gbval, g_free);
+#if GTK_CHECK_VERSION(3,0,0)
+{
+ GtkCssProvider *provider = gtk_css_provider_new();
+ GtkStyleContext *context = gtk_widget_get_style_context(pw);
+ int gb = (int)((1.0f - r) * 255.0f);
+ gchar *css;
+
+ gb = CLAMP(gb, 0, 255);
+
+ css = g_strdup_printf("* { background-color: #ff%02x%02x; }",
+ gb, gb);
+
+ gtk_css_provider_load_from_data(provider, css, -1, NULL);
+ gtk_style_context_add_provider(context,
+ GTK_STYLE_PROVIDER(provider),
+ GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+
+ g_free(css);
+ g_object_unref(provider);
+}
+#else
+{
+ GtkStyle *ps = gtk_style_copy(gtk_widget_get_style(pw));
ps->bg[GTK_STATE_NORMAL].red = 0xFFFF;
ps->bg[GTK_STATE_NORMAL].blue = ps->bg[GTK_STATE_NORMAL].green = (guint16)
((1.0f - r) * 0xFFFF);
gtk_widget_set_style(pw, ps);
+ g_object_unref(ps);
+}
+#endif
}
--
2.51.0