summaryrefslogtreecommitdiff
path: root/gtk/gtkcssarrayvalue.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2012-04-03 11:49:46 +0200
committerBenjamin Otte <otte@redhat.com>2012-04-17 08:59:17 +0200
commitca17270187ba93eed687cbb223e23a1795736e08 (patch)
treef227b6d31224eae471a55a50a7c104ae37e39838 /gtk/gtkcssarrayvalue.c
parentc5878e8f6fe9931e2241ffe9eb501b8305d1bae4 (diff)
downloadgtk+-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.c31
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 == &GTK_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)
{