]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkcsscomputedvalues.c
computedvalues: Split out a function
[~andy/gtk] / gtk / gtkcsscomputedvalues.c
index ac2718f44a544e8bc21b97a92832ed20411e29da..6f99667f9490b6ee00a9eead7552c801cff3c6c7 100644 (file)
@@ -73,6 +73,16 @@ maybe_unref_section (gpointer section)
     gtk_css_section_unref (section);
 }
 
+static void
+gtk_css_computed_values_ensure_array (GtkCssComputedValues *values,
+                                      guint                 at_least_size)
+{
+  if (values->values == NULL)
+    values->values = g_ptr_array_new_with_free_func ((GDestroyNotify)_gtk_css_value_unref);
+  if (at_least_size > values->values->len)
+   g_ptr_array_set_size (values->values, at_least_size);
+}
+
 void
 _gtk_css_computed_values_compute_value (GtkCssComputedValues *values,
                                         GtkStyleContext      *context,
@@ -89,10 +99,7 @@ _gtk_css_computed_values_compute_value (GtkCssComputedValues *values,
   prop = _gtk_css_style_property_lookup_by_id (id);
   parent = gtk_style_context_get_parent (context);
 
-  if (values->values == NULL)
-    values->values = g_ptr_array_new_with_free_func ((GDestroyNotify)_gtk_css_value_unref);
-  if (id <= values->values->len)
-   g_ptr_array_set_size (values->values, id + 1);
+  gtk_css_computed_values_ensure_array (values, id + 1);
 
   /* http://www.w3.org/TR/css3-cascade/#cascade
    * Then, for every element, the value for each property can be found
@@ -181,10 +188,7 @@ _gtk_css_computed_values_set_value (GtkCssComputedValues *values,
 {
   g_return_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values));
 
-  if (values->values == NULL)
-    values->values = g_ptr_array_new_with_free_func ((GDestroyNotify)_gtk_css_value_unref);
-  if (id >= values->values->len)
-   g_ptr_array_set_size (values->values, id + 1);
+  gtk_css_computed_values_ensure_array (values, id + 1);
 
   if (g_ptr_array_index (values->values, id))
     _gtk_css_value_unref (g_ptr_array_index (values->values, id));