aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPhilipp Stephani2017-08-27 12:42:56 +0200
committerPhilipp Stephani2017-09-23 12:28:44 +0200
commit7144e5e9f54ee41abe2e8f91ccd5901c86d38c4e (patch)
tree348aa49019626a5975717b2bd95e878988c52a71
parent3a09343eabaa751e7d40f0a21af5c63427d9a850 (diff)
downloademacs-7144e5e9f54ee41abe2e8f91ccd5901c86d38c4e.tar.gz
emacs-7144e5e9f54ee41abe2e8f91ccd5901c86d38c4e.zip
GTK+: Use a style provider instead of deprecated function
* src/gtkutil.c (xg_set_widget_bg): Use a CSS style provider instead of the deprecated gtk_widget_override_background_color.
-rw-r--r--src/gtkutil.c19
1 files changed, 13 insertions, 6 deletions
diff --git a/src/gtkutil.c b/src/gtkutil.c
index 1073bd9384a..03c404f86bb 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -1050,16 +1050,23 @@ static void
1050xg_set_widget_bg (struct frame *f, GtkWidget *w, unsigned long pixel) 1050xg_set_widget_bg (struct frame *f, GtkWidget *w, unsigned long pixel)
1051{ 1051{
1052#ifdef HAVE_GTK3 1052#ifdef HAVE_GTK3
1053 GdkRGBA bg;
1054 XColor xbg; 1053 XColor xbg;
1055 xbg.pixel = pixel; 1054 xbg.pixel = pixel;
1056 if (XQueryColor (FRAME_X_DISPLAY (f), FRAME_X_COLORMAP (f), &xbg)) 1055 if (XQueryColor (FRAME_X_DISPLAY (f), FRAME_X_COLORMAP (f), &xbg))
1057 { 1056 {
1058 bg.red = (double)xbg.red/65535.0; 1057 const char format[] = "* { background-color: #%02x%02x%02x; }";
1059 bg.green = (double)xbg.green/65535.0; 1058 /* The format is always longer than the resulting string. */
1060 bg.blue = (double)xbg.blue/65535.0; 1059 char buffer[sizeof format];
1061 bg.alpha = 1.0; 1060 int n = snprintf(buffer, sizeof buffer, format,
1062 gtk_widget_override_background_color (w, GTK_STATE_FLAG_NORMAL, &bg); 1061 xbg.red >> 8, xbg.green >> 8, xbg.blue >> 8);
1062 eassert (n > 0);
1063 eassert (n < sizeof buffer);
1064 GtkCssProvider *provider = gtk_css_provider_new ();
1065 gtk_css_provider_load_from_data (provider, buffer, -1, NULL);
1066 gtk_style_context_add_provider (gtk_widget_get_style_context(w),
1067 GTK_STYLE_PROVIDER (provider),
1068 GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
1069 g_clear_object (&provider);
1063 } 1070 }
1064#else 1071#else
1065 GdkColor bg; 1072 GdkColor bg;