Compare commits

...

2 Commits

Author SHA1 Message Date
Matthias Clasen
6078c545af Try to make late resolution of currentcolor work 2020-04-15 21:16:09 -04:00
Matthias Clasen
e78572f592 css: Fix computation of currentcolor
We must always store NULL for currentcolor in
our values structs, since that is resolved to
the color of the style at use time, it can't
be fixed at compute time, since values structs
are shared between styles.
2020-04-15 17:03:01 -04:00
26 changed files with 111 additions and 85 deletions

View File

@@ -364,20 +364,21 @@ gsk_pango_renderer_prepare_run (PangoRenderer *renderer,
GTK_IS_TEXT_VIEW (crenderer->widget))
{
GtkCssNode *node;
GtkCssValue *value;
GtkCssStyle *style;
node = gtk_text_view_get_selection_node ((GtkTextView *)crenderer->widget);
value = gtk_css_node_get_style (node)->core->color;
fg_rgba = gtk_css_color_value_get_rgba (value);
style = gtk_css_node_get_style (node);
fg_rgba = gtk_css_color_value_get_rgba (style->core->color, NULL);
}
else if (crenderer->state == GSK_PANGO_RENDERER_CURSOR && gtk_widget_has_focus (crenderer->widget))
{
GtkCssNode *node;
GtkCssValue *value;
GtkCssStyle *style;
node = gtk_widget_get_css_node (crenderer->widget);
value = gtk_css_node_get_style (node)->background->background_color;
fg_rgba = gtk_css_color_value_get_rgba (value);
style = gtk_css_node_get_style (node);
fg_rgba = gtk_css_color_value_get_rgba (style->background->background_color,
style->core->color);
}
else
fg_rgba = appearance->fg_rgba;

View File

@@ -156,6 +156,10 @@ gtk_css_value_color_compute (GtkCssValue *value,
current,
NULL);
}
else if (value->type == COLOR_TYPE_CURRENT_COLOR)
{
resolved = _gtk_css_value_ref (value);
}
else if (value->type == COLOR_TYPE_LITERAL)
{
resolved = _gtk_css_value_ref (value);
@@ -388,7 +392,7 @@ _gtk_css_color_value_resolve (GtkCssValue *color,
val = _gtk_css_color_value_resolve (color->sym_col.shade.color, provider, current, cycle_list);
if (val == NULL)
return NULL;
c = gtk_css_color_value_get_rgba (val);
c = gtk_css_color_value_get_rgba (val, current);
apply_shade (c, &shade, color->sym_col.shade.factor);
@@ -406,7 +410,7 @@ _gtk_css_color_value_resolve (GtkCssValue *color,
val = _gtk_css_color_value_resolve (color->sym_col.alpha.color, provider, current, cycle_list);
if (val == NULL)
return NULL;
c = gtk_css_color_value_get_rgba (val);
c = gtk_css_color_value_get_rgba (val, current);
apply_alpha (c, &alpha, color->sym_col.alpha.factor);
@@ -424,12 +428,12 @@ _gtk_css_color_value_resolve (GtkCssValue *color,
val1 = _gtk_css_color_value_resolve (color->sym_col.mix.color1, provider, current, cycle_list);
if (val1 == NULL)
return NULL;
color1 = gtk_css_color_value_get_rgba (val1);
color1 = gtk_css_color_value_get_rgba (val1, current);
val2 = _gtk_css_color_value_resolve (color->sym_col.mix.color2, provider, current, cycle_list);
if (val2 == NULL)
return NULL;
color2 = gtk_css_color_value_get_rgba (val2);
color2 = gtk_css_color_value_get_rgba (val2, current);
apply_mix (color1, color2, &res, color->sym_col.mix.factor);
@@ -781,11 +785,32 @@ _gtk_css_color_value_parse (GtkCssParser *parser)
return NULL;
}
const GdkRGBA *
gtk_css_color_value_get_rgba (const GtkCssValue *color)
static inline const GdkRGBA *
get_rgba (const GtkCssValue *color)
{
g_assert (color->class == &GTK_CSS_VALUE_COLOR);
g_assert (color->type == COLOR_TYPE_LITERAL);
return &color->sym_col.rgba;
}
static GdkRGBA fallback;
const GdkRGBA *
gtk_css_color_value_get_rgba (const GtkCssValue *value,
const GtkCssValue *color)
{
if (value->type == COLOR_TYPE_CURRENT_COLOR)
{
if (color)
return get_rgba (color);
else
{
fallback = GDK_RGBA("FF69B4");
return &fallback;
}
}
else
return get_rgba (value);
}

View File

@@ -44,8 +44,8 @@ GtkCssValue * _gtk_css_color_value_resolve (GtkCssValue *color
GtkStyleProvider *provider,
GtkCssValue *current,
GSList *cycle_list);
const GdkRGBA * gtk_css_color_value_get_rgba (const GtkCssValue *color) G_GNUC_CONST;
const GdkRGBA * gtk_css_color_value_get_rgba (const GtkCssValue *value,
const GtkCssValue *color) G_GNUC_CONST;
G_END_DECLS

View File

@@ -72,7 +72,7 @@ gtk_css_image_fallback_snapshot (GtkCssImage *image,
{
if (fallback->color)
{
const GdkRGBA *color = gtk_css_color_value_get_rgba (fallback->color);
const GdkRGBA *color = gtk_css_color_value_get_rgba (fallback->color, NULL);
if (!gdk_rgba_is_clear (color))
gtk_snapshot_append_color (snapshot, color,
&GRAPHENE_RECT_INIT (0, 0, width, height));

View File

@@ -193,7 +193,7 @@ gtk_css_image_linear_snapshot (GtkCssImage *image,
const GtkCssImageLinearColorStop *stop = &linear->color_stops[linear->n_stops - 1];
gtk_snapshot_append_color (snapshot,
gtk_css_color_value_get_rgba (stop->color),
gtk_css_color_value_get_rgba (stop->color, NULL),
&GRAPHENE_RECT_INIT (0, 0, width, height));
return;
}
@@ -237,7 +237,7 @@ gtk_css_image_linear_snapshot (GtkCssImage *image,
offset += step;
stops[last].offset = (offset - start) / (end - start);
stops[last].color = *gtk_css_color_value_get_rgba (stop->color);
stops[last].color = *gtk_css_color_value_get_rgba (stop->color, NULL);
}
offset = pos;

View File

@@ -206,7 +206,7 @@ gtk_css_image_radial_snapshot (GtkCssImage *image,
stop = &radial->color_stops[last];
rgba = gtk_css_color_value_get_rgba (stop->color);
rgba = gtk_css_color_value_get_rgba (stop->color, NULL);
offset += step;
cairo_pattern_add_color_stop_rgba (pattern,

View File

@@ -72,7 +72,7 @@ lookup_symbolic_colors (GtkCssStyle *style,
{
const GdkRGBA *lookup;
*color_out = *gtk_css_color_value_get_rgba (style->core->color);
*color_out = *gtk_css_color_value_get_rgba (style->core->color, NULL);
lookup = gtk_css_palette_value_get_color (palette, "success");
if (lookup)

View File

@@ -351,7 +351,7 @@ gtk_css_palette_value_get_color (GtkCssValue *value,
for (i = 0; i < value->n_colors; i ++)
{
if (strcmp (value->color_names[i], name) == 0)
return gtk_css_color_value_get_rgba (value->color_values[i]);
return gtk_css_color_value_get_rgba (value->color_values[i], NULL);
}
return NULL;

View File

@@ -544,12 +544,12 @@ gtk_css_shadow_value_snapshot_outset (const GtkCssValue *value,
continue;
/* We don't need to draw invisible shadows */
if (gdk_rgba_is_clear (gtk_css_color_value_get_rgba (shadow->color)))
if (gdk_rgba_is_clear (gtk_css_color_value_get_rgba (shadow->color, NULL)))
continue;
gtk_snapshot_append_outset_shadow (snapshot,
border_box,
gtk_css_color_value_get_rgba (shadow->color),
gtk_css_color_value_get_rgba (shadow->color, NULL),
_gtk_css_number_value_get (shadow->hoffset, 0),
_gtk_css_number_value_get (shadow->voffset, 0),
_gtk_css_number_value_get (shadow->spread, 0),
@@ -576,14 +576,14 @@ gtk_css_shadow_value_snapshot_inset (const GtkCssValue *value,
continue;
/* We don't need to draw invisible shadows */
if (gdk_rgba_is_clear (gtk_css_color_value_get_rgba (shadow->color)))
if (gdk_rgba_is_clear (gtk_css_color_value_get_rgba (shadow->color, NULL)))
continue;
dx = _gtk_css_number_value_get (shadow->hoffset, 0);
dy = _gtk_css_number_value_get (shadow->voffset, 0);
spread = _gtk_css_number_value_get (shadow->spread, 0);
radius = _gtk_css_number_value_get (shadow->radius, 0);
color = gtk_css_color_value_get_rgba (shadow->color);
color = gtk_css_color_value_get_rgba (shadow->color, NULL);
/* These are trivial to do with a color node */
if (spread == 0 && radius == 0 &&
@@ -659,7 +659,7 @@ gtk_css_shadow_value_is_clear (const GtkCssValue *value)
{
const ShadowValue *shadow = &value->shadows[i];
if (!gdk_rgba_is_clear (gtk_css_color_value_get_rgba (shadow->color)))
if (!gdk_rgba_is_clear (gtk_css_color_value_get_rgba (shadow->color, NULL)))
return FALSE;
}
@@ -684,7 +684,7 @@ gtk_css_shadow_value_push_snapshot (const GtkCssValue *value,
{
const ShadowValue *shadow = &value->shadows[i];
if (!gdk_rgba_is_clear (gtk_css_color_value_get_rgba (shadow->color)))
if (!gdk_rgba_is_clear (gtk_css_color_value_get_rgba (shadow->color, NULL)))
{
need_shadow = TRUE;
break;
@@ -701,7 +701,7 @@ gtk_css_shadow_value_push_snapshot (const GtkCssValue *value,
shadows[i].dx = _gtk_css_number_value_get (shadow->hoffset, 0);
shadows[i].dy = _gtk_css_number_value_get (shadow->voffset, 0);
shadows[i].color = *gtk_css_color_value_get_rgba (shadow->color);
shadows[i].color = *gtk_css_color_value_get_rgba (shadow->color, NULL);
shadows[i].radius = _gtk_css_number_value_get (shadow->radius, 0);
}

View File

@@ -757,10 +757,10 @@ gtk_css_border_create_initial_values (void)
values->border_top_right_radius = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_TOP_RIGHT_RADIUS, NULL, NULL, NULL);
values->border_bottom_left_radius = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_BOTTOM_LEFT_RADIUS, NULL, NULL, NULL);
values->border_bottom_right_radius = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_BOTTOM_RIGHT_RADIUS, NULL, NULL, NULL);
values->border_top_color = NULL;
values->border_right_color = NULL;
values->border_bottom_color = NULL;
values->border_left_color = NULL;
values->border_top_color = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_TOP_COLOR, NULL, NULL, NULL);
values->border_right_color = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_RIGHT_COLOR, NULL, NULL, NULL);
values->border_bottom_color = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_BOTTOM_COLOR, NULL, NULL, NULL);
values->border_left_color = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_LEFT_COLOR, NULL, NULL, NULL);
values->border_image_source = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_IMAGE_SOURCE, NULL, NULL, NULL);
values->border_image_repeat = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_IMAGE_REPEAT, NULL, NULL, NULL);
values->border_image_slice = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_BORDER_IMAGE_SLICE, NULL, NULL, NULL);
@@ -779,7 +779,7 @@ gtk_css_outline_create_initial_values (void)
values->outline_style = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_OUTLINE_STYLE, NULL, NULL, NULL);
values->outline_width = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_OUTLINE_WIDTH, NULL, NULL, NULL);
values->outline_offset = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_OUTLINE_OFFSET, NULL, NULL, NULL);
values->outline_color = NULL;
values->outline_color = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_OUTLINE_COLOR, NULL, NULL, NULL);
return (GtkCssValues *)values;
}
@@ -804,7 +804,7 @@ gtk_css_font_variant_create_initial_values (void)
values = (GtkCssFontVariantValues *)gtk_css_values_new (GTK_CSS_FONT_VARIANT_INITIAL_VALUES);
values->text_decoration_line = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_TEXT_DECORATION_LINE, NULL, NULL, NULL);
values->text_decoration_color = NULL;
values->text_decoration_color = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_TEXT_DECORATION_COLOR, NULL, NULL, NULL);
values->text_decoration_style = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_TEXT_DECORATION_STYLE, NULL, NULL, NULL);
values->font_kerning = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_FONT_KERNING, NULL, NULL, NULL);
values->font_variant_ligatures = _gtk_css_initial_value_new_compute (GTK_CSS_PROPERTY_FONT_VARIANT_LIGATURES, NULL, NULL, NULL);

View File

@@ -122,7 +122,7 @@ gtk_css_style_get_value (GtkCssStyle *style,
case GTK_CSS_PROPERTY_TEXT_DECORATION_LINE:
return style->font_variant->text_decoration_line;
case GTK_CSS_PROPERTY_TEXT_DECORATION_COLOR:
return style->font_variant->text_decoration_color ? style->font_variant->text_decoration_color : style->core->color;
return style->font_variant->text_decoration_color;
case GTK_CSS_PROPERTY_TEXT_DECORATION_STYLE:
return style->font_variant->text_decoration_style;
case GTK_CSS_PROPERTY_FONT_KERNING:
@@ -198,15 +198,15 @@ gtk_css_style_get_value (GtkCssStyle *style,
case GTK_CSS_PROPERTY_BACKGROUND_POSITION:
return style->background->background_position;
case GTK_CSS_PROPERTY_BORDER_TOP_COLOR:
return style->border->border_top_color ? style->border->border_top_color : style->core->color;
return style->border->border_top_color;
case GTK_CSS_PROPERTY_BORDER_RIGHT_COLOR:
return style->border->border_right_color ? style->border->border_right_color : style->core->color;
return style->border->border_right_color;
case GTK_CSS_PROPERTY_BORDER_BOTTOM_COLOR:
return style->border->border_bottom_color ? style->border->border_bottom_color : style->core->color;
return style->border->border_bottom_color;
case GTK_CSS_PROPERTY_BORDER_LEFT_COLOR:
return style->border->border_left_color ? style->border->border_left_color: style->core->color;
return style->border->border_left_color;
case GTK_CSS_PROPERTY_OUTLINE_COLOR:
return style->outline->outline_color ? style->outline->outline_color : style->core->color;
return style->outline->outline_color;
case GTK_CSS_PROPERTY_BACKGROUND_REPEAT:
return style->background->background_repeat;
case GTK_CSS_PROPERTY_BACKGROUND_IMAGE:
@@ -270,9 +270,9 @@ gtk_css_style_get_value (GtkCssStyle *style,
case GTK_CSS_PROPERTY_FILTER:
return style->other->filter;
case GTK_CSS_PROPERTY_CARET_COLOR:
return style->font->caret_color ? style->font->caret_color : style->core->color;
return style->font->caret_color;
case GTK_CSS_PROPERTY_SECONDARY_CARET_COLOR:
return style->font->secondary_caret_color ? style->font->secondary_caret_color : style->core->color;
return style->font->secondary_caret_color;
case GTK_CSS_PROPERTY_FONT_FEATURE_SETTINGS:
return style->font->font_feature_settings;
case GTK_CSS_PROPERTY_FONT_VARIATION_SETTINGS:
@@ -437,10 +437,8 @@ gtk_css_style_get_pango_attributes (GtkCssStyle *style)
/* text-decoration */
decoration_line = _gtk_css_text_decoration_line_value_get (style->font_variant->text_decoration_line);
decoration_style = _gtk_css_text_decoration_style_value_get (style->font_variant->text_decoration_style);
color = gtk_css_color_value_get_rgba (style->core->color);
decoration_color = gtk_css_color_value_get_rgba (style->font_variant->text_decoration_color
? style->font_variant->text_decoration_color
: style->core->color);
color = gtk_css_color_value_get_rgba (style->core->color, NULL);
decoration_color = gtk_css_color_value_get_rgba (style->font_variant->text_decoration_color, style->core->color);
switch (decoration_line)
{

View File

@@ -114,10 +114,10 @@ struct _GtkCssBorderValues {
GtkCssValue *border_top_right_radius;
GtkCssValue *border_bottom_right_radius;
GtkCssValue *border_bottom_left_radius;
GtkCssValue *border_top_color; // NULL if currentColor
GtkCssValue *border_right_color; // NULL if currentColor
GtkCssValue *border_bottom_color; // NULL if currentColor
GtkCssValue *border_left_color; // NULL if currentColor
GtkCssValue *border_top_color;
GtkCssValue *border_right_color;
GtkCssValue *border_bottom_color;
GtkCssValue *border_left_color;
GtkCssValue *border_image_source;
GtkCssValue *border_image_repeat;
GtkCssValue *border_image_slice;
@@ -137,7 +137,7 @@ struct _GtkCssOutlineValues {
GtkCssValue *outline_style;
GtkCssValue *outline_width;
GtkCssValue *outline_offset;
GtkCssValue *outline_color; // NULL if currentColor
GtkCssValue *outline_color;
};
struct _GtkCssFontValues {
@@ -148,8 +148,8 @@ struct _GtkCssFontValues {
GtkCssValue *font_stretch;
GtkCssValue *letter_spacing;
GtkCssValue *text_shadow;
GtkCssValue *caret_color; // NULL if currentColor
GtkCssValue *secondary_caret_color; // NULL if currentColor
GtkCssValue *caret_color;
GtkCssValue *secondary_caret_color;
GtkCssValue *font_feature_settings;
GtkCssValue *font_variation_settings;
};
@@ -157,7 +157,7 @@ struct _GtkCssFontValues {
struct _GtkCssFontVariantValues {
GtkCssValues base;
GtkCssValue *text_decoration_line;
GtkCssValue *text_decoration_color; // NULL if currentColor
GtkCssValue *text_decoration_color;
GtkCssValue *text_decoration_style;
GtkCssValue *font_kerning;
GtkCssValue *font_variant_ligatures;

View File

@@ -2380,7 +2380,7 @@ gtk_flow_box_snapshot (GtkWidget *widget,
cairo_append_path (cr, path);
cairo_path_destroy (path);
border_color = gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_TOP_COLOR));
border_color = gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_TOP_COLOR), _gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR));
gtk_style_context_get_border (context, &border);
cairo_set_line_width (cr, border.left);

View File

@@ -2523,7 +2523,7 @@ gtk_icon_theme_lookup_symbolic_colors (GtkCssStyle *style,
color = style->core->color;
palette = style->core->icon_palette;
*color_out = *gtk_css_color_value_get_rgba (color);
*color_out = *gtk_css_color_value_get_rgba (color, NULL);
lookup = gtk_css_palette_value_get_color (palette, "success");
if (lookup)

View File

@@ -3045,7 +3045,7 @@ gtk_label_update_layout_attributes (GtkLabel *label)
pango_attr_list_insert (attrs, attribute);
style = gtk_css_node_get_style (link->cssnode);
link_color = gtk_css_color_value_get_rgba (style->core->color);
link_color = gtk_css_color_value_get_rgba (style->core->color, NULL);
attribute = pango_attr_foreground_new (link_color->red * 65535,
link_color->green * 65535,

View File

@@ -1455,7 +1455,8 @@ create_arrow_render_node (GtkPopover *popover)
const GdkRGBA *border_color;
style = gtk_css_node_get_style (priv->arrow_node);
border_color = gtk_css_color_value_get_rgba (style->border->border_left_color ? style->border->border_left_color : style->core->color);
border_color = gtk_css_color_value_get_rgba (style->border->border_left_color,
style->core->color);
gtk_popover_apply_tail_path (popover, cr);
gdk_cairo_set_source_rgba (cr, border_color);

View File

@@ -383,7 +383,7 @@ gtk_do_render_line (GtkStyleContext *context,
cairo_save (cr);
color = gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR));
color = gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR), NULL);
cairo_set_line_cap (cr, CAIRO_LINE_CAP_SQUARE);
cairo_set_line_width (cr, 1);

View File

@@ -273,7 +273,7 @@ gtk_css_style_snapshot_background (GtkCssBoxes *boxes,
return;
background_image = background->background_image;
bg_color = gtk_css_color_value_get_rgba (background->background_color);
bg_color = gtk_css_color_value_get_rgba (background->background_color, boxes->style->core->color);
box_shadow = background->box_shadow;
has_bg_color = !gdk_rgba_is_clear (bg_color);

View File

@@ -687,10 +687,10 @@ gtk_css_style_snapshot_border (GtkCssBoxes *boxes,
gtk_css_boxes_get_padding_rect (boxes)))
return;
colors[0] = *gtk_css_color_value_get_rgba (border->border_top_color ? border->border_top_color : boxes->style->core->color);
colors[1] = *gtk_css_color_value_get_rgba (border->border_right_color ? border->border_right_color : boxes->style->core->color);
colors[2] = *gtk_css_color_value_get_rgba (border->border_bottom_color ? border->border_bottom_color : boxes->style->core->color);
colors[3] = *gtk_css_color_value_get_rgba (border->border_left_color ? border->border_left_color : boxes->style->core->color);
colors[0] = *gtk_css_color_value_get_rgba (border->border_top_color, boxes->style->core->color);
colors[1] = *gtk_css_color_value_get_rgba (border->border_right_color, boxes->style->core->color);
colors[2] = *gtk_css_color_value_get_rgba (border->border_bottom_color, boxes->style->core->color);
colors[3] = *gtk_css_color_value_get_rgba (border->border_left_color, boxes->style->core->color);
alpha_test_vector = graphene_simd4f_init (colors[0].alpha, colors[1].alpha, colors[2].alpha, colors[3].alpha);
if (graphene_simd4f_is_zero4 (alpha_test_vector))
@@ -745,7 +745,7 @@ gtk_css_style_snapshot_outline (GtkCssBoxes *boxes,
border_style[1] = border_style[2] = border_style[3] = border_style[0];
border_width[0] = _gtk_css_number_value_get (outline->outline_width, 100);
border_width[3] = border_width[2] = border_width[1] = border_width[0];
colors[0] = *gtk_css_color_value_get_rgba (outline->outline_color ? outline->outline_color : boxes->style->core->color);
colors[0] = *gtk_css_color_value_get_rgba (outline->outline_color, boxes->style->core->color);
colors[3] = colors[2] = colors[1] = colors[0];
snapshot_border (snapshot,

View File

@@ -1732,7 +1732,7 @@ gtk_snapshot_render_layout (GtkSnapshot *snapshot,
gtk_snapshot_save (snapshot);
gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (x, y));
fg_color = gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR));
fg_color = gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR), NULL);
shadows_value = _gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_TEXT_SHADOW);
has_shadow = gtk_css_shadow_value_push_snapshot (shadows_value, snapshot);

View File

@@ -929,7 +929,7 @@ gtk_style_context_resolve_color (GtkStyleContext *context,
if (val == NULL)
return FALSE;
*result = *gtk_css_color_value_get_rgba (val);
*result = *gtk_css_color_value_get_rgba (val, NULL);
_gtk_css_value_unref (val);
return TRUE;
}
@@ -980,7 +980,7 @@ gtk_style_context_get_color (GtkStyleContext *context,
g_return_if_fail (color != NULL);
g_return_if_fail (GTK_IS_STYLE_CONTEXT (context));
*color = *gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR));
*color = *gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR), NULL);
}
/**
@@ -1072,10 +1072,10 @@ _gtk_style_context_get_cursor_color (GtkStyleContext *context,
style = gtk_style_context_lookup_style (context);
if (primary_color)
*primary_color = *gtk_css_color_value_get_rgba (style->font->caret_color ? style->font->caret_color : style->core->color);
*primary_color = *gtk_css_color_value_get_rgba (style->font->caret_color, style->core->color);
if (secondary_color)
*secondary_color = *gtk_css_color_value_get_rgba (style->font->secondary_caret_color ? style->font->secondary_caret_color : style->core->color);
*secondary_color = *gtk_css_color_value_get_rgba (style->font->secondary_caret_color, style->core->color);
}
static void
@@ -1449,14 +1449,15 @@ _gtk_style_context_get_attributes (AtkAttributeSet *attributes,
const GdkRGBA *color;
gchar *value;
color = gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BACKGROUND_COLOR));
color = gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BACKGROUND_COLOR),
_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR));
value = g_strdup_printf ("%u,%u,%u",
(guint) ceil (color->red * 65536 - color->red),
(guint) ceil (color->green * 65536 - color->green),
(guint) ceil (color->blue * 65536 - color->blue));
attributes = add_attribute (attributes, ATK_TEXT_ATTR_BG_COLOR, value);
color = gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR));
color = gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR), NULL);
value = g_strdup_printf ("%u,%u,%u",
(guint) ceil (color->red * 65536 - color->red),
(guint) ceil (color->green * 65536 - color->green),

View File

@@ -3977,7 +3977,8 @@ render_para (GskPangoRenderer *crenderer,
GtkCssNode *selection_node = gtk_text_view_get_selection_node ((GtkTextView*)crenderer->widget);
gtk_style_context_save_to_node (context, selection_node);
selection = gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BACKGROUND_COLOR));
selection = gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BACKGROUND_COLOR),
_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR));
gtk_style_context_restore (context);
}

View File

@@ -131,7 +131,7 @@ gtk_text_util_create_drag_icon (GtkWidget *widget,
snapshot = gtk_snapshot_new ();
style = gtk_css_node_get_style (gtk_widget_get_css_node (widget));
color = gtk_css_color_value_get_rgba (style->core->color);
color = gtk_css_color_value_get_rgba (style->core->color, NULL);
gtk_snapshot_append_layout (snapshot, layout, color);
@@ -157,8 +157,8 @@ set_attributes_from_style (GtkWidget *widget,
context = gtk_widget_get_style_context (widget);
style = gtk_style_context_lookup_style (context);
*values->appearance.bg_rgba = *gtk_css_color_value_get_rgba (style->background->background_color);
*values->appearance.fg_rgba = *gtk_css_color_value_get_rgba (style->core->color);
*values->appearance.bg_rgba = *gtk_css_color_value_get_rgba (style->background->background_color, style->core->color);
*values->appearance.fg_rgba = *gtk_css_color_value_get_rgba (style->core->color, NULL);
if (values->font)
pango_font_description_free (values->font);

View File

@@ -7541,9 +7541,10 @@ gtk_text_view_set_attributes_from_style (GtkTextView *text_view,
context = gtk_widget_get_style_context (GTK_WIDGET (text_view));
color = gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BACKGROUND_COLOR));
color = gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BACKGROUND_COLOR),
_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR));
*values->appearance.bg_rgba = *color;
color = gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR));
color = gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR), NULL);
*values->appearance.fg_rgba = *color;
if (values->font)

View File

@@ -4174,9 +4174,8 @@ gtk_tree_view_snapshot_grid_line (GtkTreeView *tree_view,
const GdkRGBA *grid_line_color;
context = gtk_widget_get_style_context (GTK_WIDGET (tree_view));
grid_line_color = gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context,
GTK_CSS_PROPERTY_BORDER_TOP_COLOR));
grid_line_color = gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_TOP_COLOR),
_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR));
if (!gdk_rgba_equal (grid_line_color, &tree_view->grid_line_color) ||
(orientation == GTK_ORIENTATION_HORIZONTAL && !tree_view->horizontal_grid_line_texture) ||
(orientation == GTK_ORIENTATION_VERTICAL && !tree_view->vertical_grid_line_texture))
@@ -4248,9 +4247,8 @@ gtk_tree_view_snapshot_tree_line (GtkTreeView *tree_view,
const GdkRGBA *tree_line_color;
context = gtk_widget_get_style_context (GTK_WIDGET (tree_view));
tree_line_color = gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context,
GTK_CSS_PROPERTY_BORDER_LEFT_COLOR));
tree_line_color = gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BORDER_LEFT_COLOR),
_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR));
if (!gdk_rgba_equal (tree_line_color, &tree_view->tree_line_color) ||
(orientation == GTK_ORIENTATION_HORIZONTAL && !tree_view->horizontal_tree_line_texture) ||
(orientation == GTK_ORIENTATION_VERTICAL && !tree_view->vertical_tree_line_texture))

View File

@@ -4706,8 +4706,8 @@ update_opaque_region (GtkWindow *window,
context = gtk_widget_get_style_context (widget);
is_opaque = gdk_rgba_is_opaque (gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BACKGROUND_COLOR)));
is_opaque = gdk_rgba_is_opaque (gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_BACKGROUND_COLOR),
_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR)));
if (gtk_widget_get_opacity (widget) < 1.0)
is_opaque = FALSE;