summaryrefslogtreecommitdiff
path: root/gtk/gtkcssvalue.c
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2012-03-27 01:43:12 +0200
committerBenjamin Otte <otte@redhat.com>2012-04-17 08:59:12 +0200
commitffe50c3b674fe23596fd0af855ee8c1a678c3283 (patch)
treec4c19807a51ff484bab3365439d70fb28cc197ac /gtk/gtkcssvalue.c
parent3e601691d969e9194251ead18687d05eb7e49241 (diff)
downloadgtk+-ffe50c3b674fe23596fd0af855ee8c1a678c3283.tar.gz
cssvalue: Add _gtk_css_value_equal()
For now, we return FALSE for all default css values, so this is not very useful. I also think of this as an optimization equal, not a guaranteed equal, because we don't even have a notion of what "equal" means. For example, for background-repeat, "repeat, repeat" and "repeat" are functionally equivalent. But the cssvalue has no idea that it's used for background-repeat. As a more complicated example, "repeat, no-repeat" and "repeat" are equal to what one sees as long as there's only one image listed background-image-source. But once you start transition'ing to an image with 2 sources, it's different...
Diffstat (limited to 'gtk/gtkcssvalue.c')
-rw-r--r--gtk/gtkcssvalue.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/gtk/gtkcssvalue.c b/gtk/gtkcssvalue.c
index a797f65534..be0d71afdb 100644
--- a/gtk/gtkcssvalue.c
+++ b/gtk/gtkcssvalue.c
@@ -79,6 +79,13 @@ gtk_css_value_default_free (GtkCssValue *value)
g_slice_free (GtkCssValue, value);
}
+static gboolean
+gtk_css_value_default_equal (const GtkCssValue *value1,
+ const GtkCssValue *value2)
+{
+ return FALSE;
+}
+
static void
gtk_css_value_default_print (const GtkCssValue *value,
GString *string)
@@ -92,6 +99,7 @@ gtk_css_value_default_print (const GtkCssValue *value,
static const GtkCssValueClass GTK_CSS_VALUE_DEFAULT = {
gtk_css_value_default_free,
+ gtk_css_value_default_equal,
gtk_css_value_default_print
};
@@ -438,6 +446,19 @@ _gtk_css_value_unref (GtkCssValue *value)
value->class->free (value);
}
+gboolean
+_gtk_css_value_equal (const GtkCssValue *value1,
+ const GtkCssValue *value2)
+{
+ g_return_val_if_fail (value1 != NULL, FALSE);
+ g_return_val_if_fail (value2 != NULL, FALSE);
+
+ if (value1->class != value2->class)
+ return FALSE;
+
+ return value1->class->equal (value1, value2);
+}
+
void
_gtk_css_value_print (const GtkCssValue *value,
GString *string)