diff options
| author | Po Lu | 2022-03-11 20:11:57 +0800 |
|---|---|---|
| committer | Po Lu | 2022-03-11 20:26:31 +0800 |
| commit | 0dcc9fdc17773eb9154c43081e82c5bfb728e30e (patch) | |
| tree | cf679fedee94a4ec7835be45ef5665c44d50b27a /src | |
| parent | 7ad1df5e1684532efeec435be4ac7fc76affc814 (diff) | |
| download | emacs-0dcc9fdc17773eb9154c43081e82c5bfb728e30e.tar.gz emacs-0dcc9fdc17773eb9154c43081e82c5bfb728e30e.zip | |
Fix initial values of scroll bar foreground and background on GTK 3
* src/gtkutil.c (xg_create_frame_widgets): Stop creating
scrollbar stylesheet providers.
* src/xfns.c (Fx_create_frame): Create scroll bar stylesheet
providers here instead.
(x_set_scroll_bar_background):
(x_set_scroll_bar_foreground): Ignore tooltip frames.
Diffstat (limited to 'src')
| -rw-r--r-- | src/gtkutil.c | 8 | ||||
| -rw-r--r-- | src/xfns.c | 65 |
2 files changed, 39 insertions, 34 deletions
diff --git a/src/gtkutil.c b/src/gtkutil.c index f488b0ff752..fd32dc15bf2 100644 --- a/src/gtkutil.c +++ b/src/gtkutil.c | |||
| @@ -1631,14 +1631,6 @@ xg_create_frame_widgets (struct frame *f) | |||
| 1631 | G_CALLBACK (delete_cb), f); | 1631 | G_CALLBACK (delete_cb), f); |
| 1632 | #endif | 1632 | #endif |
| 1633 | 1633 | ||
| 1634 | #if defined HAVE_GTK3 && !defined HAVE_PGTK | ||
| 1635 | /* On PGTK this is done in Fx_create_frame. */ | ||
| 1636 | FRAME_OUTPUT_DATA (f)->scrollbar_background_css_provider | ||
| 1637 | = gtk_css_provider_new (); | ||
| 1638 | FRAME_OUTPUT_DATA (f)->scrollbar_foreground_css_provider | ||
| 1639 | = gtk_css_provider_new (); | ||
| 1640 | #endif | ||
| 1641 | |||
| 1642 | /* Convert our geometry parameters into a geometry string | 1634 | /* Convert our geometry parameters into a geometry string |
| 1643 | and specify it. | 1635 | and specify it. |
| 1644 | GTK will itself handle calculating the real position this way. */ | 1636 | GTK will itself handle calculating the real position this way. */ |
diff --git a/src/xfns.c b/src/xfns.c index 65f3b5097c3..a1d6fd29df9 100644 --- a/src/xfns.c +++ b/src/xfns.c | |||
| @@ -1970,22 +1970,25 @@ x_set_scroll_bar_foreground (struct frame *f, Lisp_Object value, Lisp_Object old | |||
| 1970 | } | 1970 | } |
| 1971 | 1971 | ||
| 1972 | #ifdef HAVE_GTK3 | 1972 | #ifdef HAVE_GTK3 |
| 1973 | if (pixel != -1) | 1973 | if (!FRAME_TOOLTIP_P (f)) |
| 1974 | { | 1974 | { |
| 1975 | color.pixel = pixel; | 1975 | if (pixel != -1) |
| 1976 | { | ||
| 1977 | color.pixel = pixel; | ||
| 1976 | 1978 | ||
| 1977 | XQueryColor (FRAME_X_DISPLAY (f), | 1979 | XQueryColor (FRAME_X_DISPLAY (f), |
| 1978 | FRAME_X_COLORMAP (f), | 1980 | FRAME_X_COLORMAP (f), |
| 1979 | &color); | 1981 | &color); |
| 1980 | 1982 | ||
| 1981 | sprintf (css, "scrollbar slider { background-color: #%02x%02x%02x; }", | 1983 | sprintf (css, "scrollbar slider { background-color: #%02x%02x%02x; }", |
| 1982 | color.red >> 8, color.green >> 8, color.blue >> 8); | 1984 | color.red >> 8, color.green >> 8, color.blue >> 8); |
| 1983 | gtk_css_provider_load_from_data (FRAME_X_OUTPUT (f)->scrollbar_foreground_css_provider, | 1985 | gtk_css_provider_load_from_data (FRAME_X_OUTPUT (f)->scrollbar_foreground_css_provider, |
| 1984 | css, -1, NULL); | 1986 | css, -1, NULL); |
| 1987 | } | ||
| 1988 | else | ||
| 1989 | gtk_css_provider_load_from_data (FRAME_X_OUTPUT (f)->scrollbar_foreground_css_provider, | ||
| 1990 | "", -1, NULL); | ||
| 1985 | } | 1991 | } |
| 1986 | else | ||
| 1987 | gtk_css_provider_load_from_data (FRAME_X_OUTPUT (f)->scrollbar_foreground_css_provider, | ||
| 1988 | "", -1, NULL); | ||
| 1989 | #endif | 1992 | #endif |
| 1990 | } | 1993 | } |
| 1991 | 1994 | ||
| @@ -2040,22 +2043,25 @@ x_set_scroll_bar_background (struct frame *f, Lisp_Object value, Lisp_Object old | |||
| 2040 | } | 2043 | } |
| 2041 | 2044 | ||
| 2042 | #ifdef HAVE_GTK3 | 2045 | #ifdef HAVE_GTK3 |
| 2043 | if (pixel != -1) | 2046 | if (!FRAME_TOOLTIP_P (f)) |
| 2044 | { | 2047 | { |
| 2045 | color.pixel = pixel; | 2048 | if (pixel != -1) |
| 2049 | { | ||
| 2050 | color.pixel = pixel; | ||
| 2046 | 2051 | ||
| 2047 | XQueryColor (FRAME_X_DISPLAY (f), | 2052 | XQueryColor (FRAME_X_DISPLAY (f), |
| 2048 | FRAME_X_COLORMAP (f), | 2053 | FRAME_X_COLORMAP (f), |
| 2049 | &color); | 2054 | &color); |
| 2050 | 2055 | ||
| 2051 | sprintf (css, "scrollbar trough { background-color: #%02x%02x%02x; }", | 2056 | sprintf (css, "scrollbar trough { background-color: #%02x%02x%02x; }", |
| 2052 | color.red >> 8, color.green >> 8, color.blue >> 8); | 2057 | color.red >> 8, color.green >> 8, color.blue >> 8); |
| 2053 | gtk_css_provider_load_from_data (FRAME_X_OUTPUT (f)->scrollbar_background_css_provider, | 2058 | gtk_css_provider_load_from_data (FRAME_X_OUTPUT (f)->scrollbar_background_css_provider, |
| 2054 | css, -1, NULL); | 2059 | css, -1, NULL); |
| 2055 | } | 2060 | } |
| 2056 | else | 2061 | else |
| 2057 | gtk_css_provider_load_from_data (FRAME_X_OUTPUT (f)->scrollbar_background_css_provider, | 2062 | gtk_css_provider_load_from_data (FRAME_X_OUTPUT (f)->scrollbar_background_css_provider, |
| 2058 | "", -1, NULL); | 2063 | "", -1, NULL); |
| 2064 | } | ||
| 2059 | #endif | 2065 | #endif |
| 2060 | } | 2066 | } |
| 2061 | 2067 | ||
| @@ -4759,6 +4765,13 @@ This function is an internal primitive--use `make-frame' instead. */) | |||
| 4759 | gui_default_parameter (f, parms, Qno_special_glyphs, Qnil, | 4765 | gui_default_parameter (f, parms, Qno_special_glyphs, Qnil, |
| 4760 | NULL, NULL, RES_TYPE_BOOLEAN); | 4766 | NULL, NULL, RES_TYPE_BOOLEAN); |
| 4761 | 4767 | ||
| 4768 | #ifdef HAVE_GTK3 | ||
| 4769 | FRAME_OUTPUT_DATA (f)->scrollbar_background_css_provider | ||
| 4770 | = gtk_css_provider_new (); | ||
| 4771 | FRAME_OUTPUT_DATA (f)->scrollbar_foreground_css_provider | ||
| 4772 | = gtk_css_provider_new (); | ||
| 4773 | #endif | ||
| 4774 | |||
| 4762 | x_default_scroll_bar_color_parameter (f, parms, Qscroll_bar_foreground, | 4775 | x_default_scroll_bar_color_parameter (f, parms, Qscroll_bar_foreground, |
| 4763 | "scrollBarForeground", | 4776 | "scrollBarForeground", |
| 4764 | "ScrollBarForeground", true); | 4777 | "ScrollBarForeground", true); |