diff options
| author | Philipp Stephani | 2017-08-27 12:42:56 +0200 |
|---|---|---|
| committer | Philipp Stephani | 2017-09-23 12:28:44 +0200 |
| commit | 7144e5e9f54ee41abe2e8f91ccd5901c86d38c4e (patch) | |
| tree | 348aa49019626a5975717b2bd95e878988c52a71 | |
| parent | 3a09343eabaa751e7d40f0a21af5c63427d9a850 (diff) | |
| download | emacs-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.c | 19 |
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 | |||
| 1050 | xg_set_widget_bg (struct frame *f, GtkWidget *w, unsigned long pixel) | 1050 | xg_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; |