computedvalues: Split out a function

This commit is contained in:
Benjamin Otte 2012-04-10 13:25:56 +02:00
parent b6594d1ac9
commit 50fdb6a13f

View 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));