summaryrefslogtreecommitdiff
path: root/gtk/gtkcssimagevalue.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2012-07-11 06:56:07 +0200
committerBenjamin Otte <otte@redhat.com>2012-08-28 15:40:56 +0200
commit9b953829fbf1332d00c2ca8a99c7da5e4bda8c64 (patch)
treed11d83a1dbe54909d5ee729a77b55bfa4393649d /gtk/gtkcssimagevalue.c
parent3f00801e9aedd971378a6aad70e945903db7a798 (diff)
downloadgtk+-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.c23
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