From 8bb2720494d9421b26ca9d63c19800de16bf41f0 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Wed, 1 May 2024 16:01:45 -0400 Subject: [PATCH] icontheme: Move css style code where it belongs Move gtk_icon_theme_lookup_symbolic_colors to gtkcssstyle.c, and rename it to gtk_css_style_lookup_symbolic_colors. Update all callers. --- gtk/gtkcssimageicontheme.c | 2 +- gtk/gtkcssstyle.c | 28 ++++++++++++++++++++++++++++ gtk/gtkcssstyleprivate.h | 3 +++ gtk/gtkicontheme.c | 28 ---------------------------- gtk/gtkiconthemeprivate.h | 3 --- gtk/gtkrendericon.c | 3 ++- 6 files changed, 34 insertions(+), 33 deletions(-) diff --git a/gtk/gtkcssimageicontheme.c b/gtk/gtkcssimageicontheme.c index 02e0c8a346..5f00c05d02 100644 --- a/gtk/gtkcssimageicontheme.c +++ b/gtk/gtkcssimageicontheme.c @@ -156,7 +156,7 @@ gtk_css_image_icon_theme_compute (GtkCssImage *image, copy->icon_theme = gtk_icon_theme_get_for_display (display); copy->serial = gtk_icon_theme_get_serial (copy->icon_theme); copy->scale = gtk_style_provider_get_scale (provider); - gtk_icon_theme_lookup_symbolic_colors (style, copy->colors); + gtk_css_style_lookup_symbolic_colors (style, copy->colors); return GTK_CSS_IMAGE (copy); } diff --git a/gtk/gtkcssstyle.c b/gtk/gtkcssstyle.c index 0822e80a46..33c3e74958 100644 --- a/gtk/gtkcssstyle.c +++ b/gtk/gtkcssstyle.c @@ -29,6 +29,7 @@ #include "gtkcssinitialvalueprivate.h" #include "gtkcssnumbervalueprivate.h" #include "gtkcsscolorvalueprivate.h" +#include "gtkcsspalettevalueprivate.h" #include "gtkcssshorthandpropertyprivate.h" #include "gtkcssstringvalueprivate.h" #include "gtkcssfontvariationsvalueprivate.h" @@ -750,6 +751,33 @@ gtk_css_style_get_pango_font (GtkCssStyle *style) return description; } +void +gtk_css_style_lookup_symbolic_colors (GtkCssStyle *style, + GdkRGBA color_out[4]) +{ + GtkCssValue *palette, *color; + const char *names[4] = { + [GTK_SYMBOLIC_COLOR_ERROR] = "error", + [GTK_SYMBOLIC_COLOR_WARNING] = "warning", + [GTK_SYMBOLIC_COLOR_SUCCESS] = "success" + }; + + color = style->core->color; + palette = style->core->icon_palette; + color_out[GTK_SYMBOLIC_COLOR_FOREGROUND] = *gtk_css_color_value_get_rgba (color); + + for (gsize i = 1; i < 4; i++) + { + const GdkRGBA *lookup; + + lookup = gtk_css_palette_value_get_color (palette, names[i]); + if (lookup) + color_out[i] = *lookup; + else + color_out[i] = color_out[GTK_SYMBOLIC_COLOR_FOREGROUND]; + } +} + /* Refcounted value structs */ static const int values_size[] = { diff --git a/gtk/gtkcssstyleprivate.h b/gtk/gtkcssstyleprivate.h index 82531a6ffe..16f68f4886 100644 --- a/gtk/gtkcssstyleprivate.h +++ b/gtk/gtkcssstyleprivate.h @@ -268,6 +268,9 @@ char * gtk_css_style_compute_font_features (GtkCssStyle PangoAttrList * gtk_css_style_get_pango_attributes (GtkCssStyle *style); PangoFontDescription * gtk_css_style_get_pango_font (GtkCssStyle *style); +void gtk_css_style_lookup_symbolic_colors (GtkCssStyle *style, + GdkRGBA color_out[4]); + GtkCssValues *gtk_css_values_new (GtkCssValuesType type); GtkCssValues *gtk_css_values_ref (GtkCssValues *values); void gtk_css_values_unref (GtkCssValues *values); diff --git a/gtk/gtkicontheme.c b/gtk/gtkicontheme.c index 036610f29a..f1cd488807 100644 --- a/gtk/gtkicontheme.c +++ b/gtk/gtkicontheme.c @@ -2533,34 +2533,6 @@ gtk_icon_theme_error_quark (void) return g_quark_from_static_string ("gtk-icon-theme-error-quark"); } -void -gtk_icon_theme_lookup_symbolic_colors (GtkCssStyle *style, - GdkRGBA color_out[4]) -{ - GtkCssValue *palette, *color; - const char *names[4] = { - [GTK_SYMBOLIC_COLOR_ERROR] = "error", - [GTK_SYMBOLIC_COLOR_WARNING] = "warning", - [GTK_SYMBOLIC_COLOR_SUCCESS] = "success" - }; - const GdkRGBA *lookup; - gsize i; - - color = style->core->color; - palette = style->core->icon_palette; - color_out[GTK_SYMBOLIC_COLOR_FOREGROUND] = *gtk_css_color_value_get_rgba (color); - - for (i = 1; i < 4; i++) - { - lookup = gtk_css_palette_value_get_color (palette, names[i]); - if (lookup) - color_out[i] = *lookup; - else - color_out[i] = color_out[GTK_SYMBOLIC_COLOR_FOREGROUND]; - } -} - - /** * gtk_icon_theme_has_icon: * @self: a `GtkIconTheme` diff --git a/gtk/gtkiconthemeprivate.h b/gtk/gtkiconthemeprivate.h index a4c5066ac5..1626d596cc 100644 --- a/gtk/gtkiconthemeprivate.h +++ b/gtk/gtkiconthemeprivate.h @@ -26,8 +26,5 @@ const char *gtk_string_set_add (GtkStringSet *set, #define IMAGE_MISSING_RESOURCE_PATH "/org/gtk/libgtk/icons/16x16/status/image-missing.png" -void gtk_icon_theme_lookup_symbolic_colors (GtkCssStyle *style, - GdkRGBA color_out[4]); - int gtk_icon_theme_get_serial (GtkIconTheme *self); diff --git a/gtk/gtkrendericon.c b/gtk/gtkrendericon.c index a6c878491c..6665dcd7e3 100644 --- a/gtk/gtkrendericon.c +++ b/gtk/gtkrendericon.c @@ -21,6 +21,7 @@ #include "gtkrendericonprivate.h" +#include "gtkcsscolorvalueprivate.h" #include "gtkcssfiltervalueprivate.h" #include "gtkcssimagevalueprivate.h" #include "gtkcssshadowvalueprivate.h" @@ -116,7 +117,7 @@ gtk_css_style_snapshot_icon_paintable (GtkCssStyle *style, is_symbolic_paintable = GTK_IS_SYMBOLIC_PAINTABLE (paintable); if (is_symbolic_paintable) { - gtk_icon_theme_lookup_symbolic_colors (style, colors); + gtk_css_style_lookup_symbolic_colors (style, colors); if (gdk_rgba_is_clear (&colors[0])) goto transparent;