refactor: unify tree/xtext/input colors via ThemeWidgetStyleValues (canonical widget-style path)

This commit is contained in:
2026-03-07 22:11:09 -07:00
parent ca043be197
commit f2354a7fa2
4 changed files with 37 additions and 28 deletions

View File

@@ -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]);*/

View File

@@ -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 *) */

View File

@@ -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, &gtk_map))
{
theme_runtime_get_xtext_colors_mapped (&gtk_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;
}
}

View File

@@ -2,6 +2,7 @@
#include "theme-runtime.h"
#include "theme-gtk3.h"
#include "theme-access.h"
#include "../gtkutil.h"
#include <string.h>
@@ -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))