diff --git a/src/fe-gtk/chanview-tree.c b/src/fe-gtk/chanview-tree.c index 4b45cc7e..cc6ad08e 100644 --- a/src/fe-gtk/chanview-tree.c +++ b/src/fe-gtk/chanview-tree.c @@ -138,20 +138,11 @@ cv_tree_init (chanview *cv) gtk_widget_set_hexpand (view, TRUE); gtk_widget_set_vexpand (view, TRUE); gtk_widget_set_name (view, "zoitechat-tree"); - if ( - cv->font_desc - ) { - GdkRGBA bg; - GdkRGBA fg; - const GdkRGBA *bg_color = NULL; - const GdkRGBA *fg_color = NULL; + ThemeWidgetStyleValues style_values; - if (theme_get_color (THEME_TOKEN_TEXT_BACKGROUND, &bg)) - bg_color = &bg; - if (theme_get_color (THEME_TOKEN_TEXT_FOREGROUND, &fg)) - fg_color = &fg; - gtkutil_apply_palette (view, bg_color, fg_color, + theme_get_widget_style_values_for_widget (view, &style_values); + gtkutil_apply_palette (view, &style_values.background, &style_values.foreground, cv->font_desc); } /*gtk_widget_modify_base (view, GTK_STATE_NORMAL, &colors[THEME_LEGACY_TEXT_BACKGROUND]);*/ diff --git a/src/fe-gtk/chanview.c b/src/fe-gtk/chanview.c index ae789f94..6c43b546 100644 --- a/src/fe-gtk/chanview.c +++ b/src/fe-gtk/chanview.c @@ -29,6 +29,7 @@ #include "gtkutil.h" #include "chanview.h" #include "theme/theme-manager.h" +#include "theme/theme-access.h" /* treeStore columns */ #define COL_NAME 0 /* (char *) */ diff --git a/src/fe-gtk/theme/theme-access.c b/src/fe-gtk/theme/theme-access.c index a2d10613..517936a7 100644 --- a/src/fe-gtk/theme/theme-access.c +++ b/src/fe-gtk/theme/theme-access.c @@ -4,6 +4,13 @@ #include "theme-gtk3.h" + +enum +{ + THEME_XTEXT_FG_INDEX = 34, + THEME_XTEXT_BG_INDEX = 35 +}; + static gboolean theme_token_to_rgb16 (ThemeSemanticToken token, guint16 *red, guint16 *green, guint16 *blue) { @@ -115,12 +122,25 @@ theme_get_xtext_colors (XTextColor *palette, size_t palette_len) void theme_get_xtext_colors_for_widget (GtkWidget *widget, XTextColor *palette, size_t palette_len) { - ThemeGtkPaletteMap gtk_map = { 0 }; + ThemeWidgetStyleValues style_values; - if (theme_access_get_gtk_palette_map (widget, >k_map)) - { - theme_runtime_get_xtext_colors_mapped (>k_map, palette, palette_len); + if (!palette) return; - } + + theme_get_widget_style_values_for_widget (widget, &style_values); theme_runtime_get_xtext_colors (palette, palette_len); + if (palette_len > THEME_XTEXT_FG_INDEX) + { + palette[THEME_XTEXT_FG_INDEX].red = style_values.foreground.red; + palette[THEME_XTEXT_FG_INDEX].green = style_values.foreground.green; + palette[THEME_XTEXT_FG_INDEX].blue = style_values.foreground.blue; + palette[THEME_XTEXT_FG_INDEX].alpha = style_values.foreground.alpha; + } + if (palette_len > THEME_XTEXT_BG_INDEX) + { + palette[THEME_XTEXT_BG_INDEX].red = style_values.background.red; + palette[THEME_XTEXT_BG_INDEX].green = style_values.background.green; + palette[THEME_XTEXT_BG_INDEX].blue = style_values.background.blue; + palette[THEME_XTEXT_BG_INDEX].alpha = style_values.background.alpha; + } } diff --git a/src/fe-gtk/theme/theme-css.c b/src/fe-gtk/theme/theme-css.c index ca59056e..d8480e05 100644 --- a/src/fe-gtk/theme/theme-css.c +++ b/src/fe-gtk/theme/theme-css.c @@ -2,6 +2,7 @@ #include "theme-runtime.h" #include "theme-gtk3.h" +#include "theme-access.h" #include "../gtkutil.h" #include @@ -169,18 +170,14 @@ theme_css_reload_input_style (gboolean enabled, const PangoFontDescription *font next.theme_name = g_strdup (theme_name); { - GdkRGBA color; + ThemeWidgetStyleValues style_values; - if (theme_runtime_get_color (THEME_TOKEN_TEXT_FOREGROUND, &color)) - { - theme_palette_color_get_rgb16 (&color, &next.fg_red, &next.fg_green, &next.fg_blue); - next.colors_set = TRUE; - } - if (theme_runtime_get_color (THEME_TOKEN_TEXT_BACKGROUND, &color)) - { - theme_palette_color_get_rgb16 (&color, &next.bg_red, &next.bg_green, &next.bg_blue); - next.colors_set = TRUE; - } + theme_get_widget_style_values_for_widget (NULL, &style_values); + theme_palette_color_get_rgb16 (&style_values.foreground, + &next.fg_red, &next.fg_green, &next.fg_blue); + theme_palette_color_get_rgb16 (&style_values.background, + &next.bg_red, &next.bg_green, &next.bg_blue); + next.colors_set = TRUE; } if (theme_css_input_fingerprint_matches (&next))