diff options
author | Benjamin Otte <otte@redhat.com> | 2012-04-03 11:49:46 +0200 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2012-04-17 08:59:17 +0200 |
commit | ca17270187ba93eed687cbb223e23a1795736e08 (patch) | |
tree | f227b6d31224eae471a55a50a7c104ae37e39838 /gtk/gtkcssarrayvalue.c | |
parent | c5878e8f6fe9931e2241ffe9eb501b8305d1bae4 (diff) | |
download | gtk+-ca17270187ba93eed687cbb223e23a1795736e08.tar.gz |
cssvalue: Make GtkCssShadowValue only hold one shadow
All the properties now are a GtkCssArrayValue of GtkCssSadowValue.
GtkCssArrayValue already does everything we want, so no need to
duplicate its funtionality.
Diffstat (limited to 'gtk/gtkcssarrayvalue.c')
-rw-r--r-- | gtk/gtkcssarrayvalue.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/gtk/gtkcssarrayvalue.c b/gtk/gtkcssarrayvalue.c index baab5fa820..4a52ef84db 100644 --- a/gtk/gtkcssarrayvalue.c +++ b/gtk/gtkcssarrayvalue.c @@ -154,6 +154,37 @@ _gtk_css_array_value_parse (GtkCssParser *parser, } GtkCssValue * +_gtk_css_array_value_compute (GtkCssValue *value, + GtkCssValue * (* compute_func) (GtkCssValue *, GtkStyleContext *), + GtkStyleContext *context) +{ + GtkCssValue *result; + gboolean changed = FALSE; + guint i; + + g_return_val_if_fail (value->class == >K_CSS_VALUE_ARRAY, NULL); + g_return_val_if_fail (compute_func != NULL, NULL); + + if (value->n_values == 0) + return _gtk_css_value_ref (value); + + result = _gtk_css_array_value_new_from_array (value->values, value->n_values); + for (i = 0; i < value->n_values; i++) + { + result->values[i] = (* compute_func) (value->values[i], context); + changed |= (result->values[i] != value->values[i]); + } + + if (!changed) + { + _gtk_css_value_unref (result); + return _gtk_css_value_ref (value); + } + + return result; +} + +GtkCssValue * _gtk_css_array_value_get_nth (const GtkCssValue *value, guint i) { |