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/gtkcssimagevalue.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/gtkcssimagevalue.c')
-rw-r--r-- | gtk/gtkcssimagevalue.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/gtk/gtkcssimagevalue.c b/gtk/gtkcssimagevalue.c index e67e9ea51a..6f65e2253e 100644 --- a/gtk/gtkcssimagevalue.c +++ b/gtk/gtkcssimagevalue.c @@ -33,6 +33,28 @@ gtk_css_value_image_free (GtkCssValue *value) g_slice_free (GtkCssValue, value); } +static GtkCssValue * +gtk_css_value_image_compute (GtkCssValue *value, + GtkStyleContext *context) +{ + GtkCssImage *image, *computed; + + image = _gtk_css_image_value_get_image (value); + + if (image == NULL) + return _gtk_css_value_ref (value); + + computed = _gtk_css_image_compute (image, context); + + if (computed == image) + { + g_object_unref (computed); + return _gtk_css_value_ref (value); + } + + return _gtk_css_image_value_new (computed); +} + static gboolean gtk_css_value_image_equal (const GtkCssValue *value1, const GtkCssValue *value2) @@ -66,6 +88,7 @@ gtk_css_value_image_print (const GtkCssValue *value, static const GtkCssValueClass GTK_CSS_VALUE_IMAGE = { gtk_css_value_image_free, + gtk_css_value_image_compute, gtk_css_value_image_equal, gtk_css_value_image_transition, gtk_css_value_image_print |