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_hexpand (view, TRUE);
gtk_widget_set_vexpand (view, TRUE); gtk_widget_set_vexpand (view, TRUE);
gtk_widget_set_name (view, "zoitechat-tree"); gtk_widget_set_name (view, "zoitechat-tree");
if (
cv->font_desc
)
{ {
GdkRGBA bg; ThemeWidgetStyleValues style_values;
GdkRGBA fg;
const GdkRGBA *bg_color = NULL;
const GdkRGBA *fg_color = NULL;
if (theme_get_color (THEME_TOKEN_TEXT_BACKGROUND, &bg)) theme_get_widget_style_values_for_widget (view, &style_values);
bg_color = &bg; gtkutil_apply_palette (view, &style_values.background, &style_values.foreground,
if (theme_get_color (THEME_TOKEN_TEXT_FOREGROUND, &fg))
fg_color = &fg;
gtkutil_apply_palette (view, bg_color, fg_color,
cv->font_desc); cv->font_desc);
} }
/*gtk_widget_modify_base (view, GTK_STATE_NORMAL, &colors[THEME_LEGACY_TEXT_BACKGROUND]);*/ /*gtk_widget_modify_base (view, GTK_STATE_NORMAL, &colors[THEME_LEGACY_TEXT_BACKGROUND]);*/

View File

@@ -29,6 +29,7 @@
#include "gtkutil.h" #include "gtkutil.h"
#include "chanview.h" #include "chanview.h"
#include "theme/theme-manager.h" #include "theme/theme-manager.h"
#include "theme/theme-access.h"
/* treeStore columns */ /* treeStore columns */
#define COL_NAME 0 /* (char *) */ #define COL_NAME 0 /* (char *) */

View File

@@ -4,6 +4,13 @@
#include "theme-gtk3.h" #include "theme-gtk3.h"
enum
{
THEME_XTEXT_FG_INDEX = 34,
THEME_XTEXT_BG_INDEX = 35
};
static gboolean static gboolean
theme_token_to_rgb16 (ThemeSemanticToken token, guint16 *red, guint16 *green, guint16 *blue) 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 void
theme_get_xtext_colors_for_widget (GtkWidget *widget, XTextColor *palette, size_t palette_len) 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)) if (!palette)
{
theme_runtime_get_xtext_colors_mapped (&gtk_map, palette, palette_len);
return; return;
}
theme_get_widget_style_values_for_widget (widget, &style_values);
theme_runtime_get_xtext_colors (palette, palette_len); 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-runtime.h"
#include "theme-gtk3.h" #include "theme-gtk3.h"
#include "theme-access.h"
#include "../gtkutil.h" #include "../gtkutil.h"
#include <string.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); next.theme_name = g_strdup (theme_name);
{ {
GdkRGBA color; ThemeWidgetStyleValues style_values;
if (theme_runtime_get_color (THEME_TOKEN_TEXT_FOREGROUND, &color)) theme_get_widget_style_values_for_widget (NULL, &style_values);
{ theme_palette_color_get_rgb16 (&style_values.foreground,
theme_palette_color_get_rgb16 (&color, &next.fg_red, &next.fg_green, &next.fg_blue); &next.fg_red, &next.fg_green, &next.fg_blue);
next.colors_set = TRUE; theme_palette_color_get_rgb16 (&style_values.background,
} &next.bg_red, &next.bg_green, &next.bg_blue);
if (theme_runtime_get_color (THEME_TOKEN_TEXT_BACKGROUND, &color)) next.colors_set = TRUE;
{
theme_palette_color_get_rgb16 (&color, &next.bg_red, &next.bg_green, &next.bg_blue);
next.colors_set = TRUE;
}
} }
if (theme_css_input_fingerprint_matches (&next)) if (theme_css_input_fingerprint_matches (&next))