styleproperty: Fix 'currentColor'

It was always looking at the 'color' keyword for the parent context
instead of only doing that when used with the 'color' property.

Tested by border-color-default.ui reftest.
This commit is contained in:
Benjamin Otte 2012-01-12 04:35:36 +01:00
parent 581cc59945
commit 4a33eb1aae

View File

@ -58,15 +58,27 @@ restart:
if (G_VALUE_HOLDS (specified, GTK_TYPE_CSS_SPECIAL_VALUE))
{
GtkStyleContext *parent = gtk_style_context_get_parent (context);
g_assert (g_value_get_enum (specified) == GTK_CSS_CURRENT_COLOR);
if (parent)
g_value_copy (_gtk_style_context_peek_property (parent, "color"), computed);
/* The computed value of the currentColor keyword is the computed
* value of the color property. If the currentColor keyword is
* set on the color property itself, it is treated as color: inherit.
*/
if (g_str_equal (_gtk_style_property_get_name (GTK_STYLE_PROPERTY (property)), "color"))
{
GtkStyleContext *parent = gtk_style_context_get_parent (context);
if (parent)
g_value_copy (_gtk_style_context_peek_property (parent, "color"), computed);
else
_gtk_css_style_compute_value (computed,
context,
_gtk_css_style_property_get_initial_value (property));
}
else
_gtk_css_style_compute_value (computed,
context,
_gtk_css_style_property_get_initial_value (property));
{
g_value_copy (_gtk_style_context_peek_property (context, "color"), computed);
}
}
else if (G_VALUE_HOLDS (specified, GTK_TYPE_SYMBOLIC_COLOR))
{