diff options
author | Benjamin Otte <otte@redhat.com> | 2012-07-11 06:56:07 +0200 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2012-08-28 15:40:56 +0200 |
commit | 9b953829fbf1332d00c2ca8a99c7da5e4bda8c64 (patch) | |
tree | d11d83a1dbe54909d5ee729a77b55bfa4393649d /gtk/gtkcssbordervalue.c | |
parent | 3f00801e9aedd971378a6aad70e945903db7a798 (diff) | |
download | gtk+-9b953829fbf1332d00c2ca8a99c7da5e4bda8c64.tar.gz |
css: Introduce _gtk_css_value_compute()
This commit is essentially a large reorganization. Instead of all value
subtypes having their own compute function, there is the general
_gtk_css_value_compute() function that then calls a vfunc on the
subtype.
Diffstat (limited to 'gtk/gtkcssbordervalue.c')
-rw-r--r-- | gtk/gtkcssbordervalue.c | 61 |
1 files changed, 30 insertions, 31 deletions
diff --git a/gtk/gtkcssbordervalue.c b/gtk/gtkcssbordervalue.c index 92ae98a9c6..53ba12fcbe 100644 --- a/gtk/gtkcssbordervalue.c +++ b/gtk/gtkcssbordervalue.c @@ -41,6 +41,35 @@ gtk_css_value_border_free (GtkCssValue *value) g_slice_free (GtkCssValue, value); } +static GtkCssValue * +gtk_css_value_border_compute (GtkCssValue *value, + GtkStyleContext *context) +{ + GtkCssValue *computed; + gboolean changed = FALSE; + guint i; + + computed = _gtk_css_border_value_new (NULL, NULL, NULL, NULL); + computed->fill = value->fill; + + for (i = 0; i < 4; i++) + { + if (value->values[i]) + { + computed->values[i] = _gtk_css_value_compute (value->values[i], context); + changed |= (computed->values[i] != value->values[i]); + } + } + + if (!changed) + { + _gtk_css_value_unref (computed); + return _gtk_css_value_ref (value); + } + + return computed; +} + static gboolean gtk_css_value_border_equal (const GtkCssValue *value1, const GtkCssValue *value2) @@ -99,6 +128,7 @@ gtk_css_value_border_print (const GtkCssValue *value, static const GtkCssValueClass GTK_CSS_VALUE_BORDER = { gtk_css_value_border_free, + gtk_css_value_border_compute, gtk_css_value_border_equal, gtk_css_value_border_transition, gtk_css_value_border_print @@ -202,34 +232,3 @@ _gtk_css_border_value_get_left (const GtkCssValue *value) return value->values[GTK_CSS_LEFT]; } -GtkCssValue * -_gtk_css_border_value_compute (GtkCssValue *value, - GtkStyleContext *context) -{ - GtkCssValue *computed; - gboolean changed = FALSE; - guint i; - - g_return_val_if_fail (value->class == >K_CSS_VALUE_BORDER, NULL); - - computed = _gtk_css_border_value_new (NULL, NULL, NULL, NULL); - computed->fill = value->fill; - - for (i = 0; i < 4; i++) - { - if (value->values[i]) - { - computed->values[i] = _gtk_css_number_value_compute (value->values[i], context); - changed |= (computed->values[i] != value->values[i]); - } - } - - if (!changed) - { - _gtk_css_value_unref (computed); - return _gtk_css_value_ref (value); - } - - return computed; -} - |