From 115c34498e00d5c1723c72f82a1bc80ea39faa32 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Fri, 23 Mar 2012 23:52:48 +0100 Subject: [PATCH] styleproperty: Add a function to compare values for equality and default to never compare them as equal. --- gtk/gtkcssstyleproperty.c | 31 +++++++++++++++++++++++++++++++ gtk/gtkcssstylepropertyprivate.h | 7 +++++++ 2 files changed, 38 insertions(+) diff --git a/gtk/gtkcssstyleproperty.c b/gtk/gtkcssstyleproperty.c index 8839cd68f..95b8ba166 100644 --- a/gtk/gtkcssstyleproperty.c +++ b/gtk/gtkcssstyleproperty.c @@ -298,12 +298,21 @@ gtk_css_style_property_real_compute_value (GtkCssStyleProperty *property, return _gtk_css_style_compute_value (context, _gtk_css_style_property_get_computed_type (property), specified); } +static gboolean +gtk_css_style_property_real_equal (GtkCssStyleProperty *property, + GtkCssValue *value1, + GtkCssValue *value2) +{ + return FALSE; +} + static void _gtk_css_style_property_init (GtkCssStyleProperty *property) { property->parse_value = gtk_css_style_property_real_parse_value; property->print_value = gtk_css_style_property_real_print_value; property->compute_value = gtk_css_style_property_real_compute_value; + property->equal_func = gtk_css_style_property_real_equal; } /** @@ -538,3 +547,25 @@ _gtk_css_style_property_print_value (GtkCssStyleProperty *property, } } +/** + * _gtk_css_style_property_is_equal: + * @property: the property + * @value1: the first value to compare + * @value2: the second value to compare + * + * Compares @value1 and @value2 for equality. Both values must be the + * result of a call _gtk_css_style_property_compute_value(). + * + * Returns: %TRUE if @value1 and @value2 are equal + **/ +gboolean +_gtk_css_style_property_is_equal (GtkCssStyleProperty *property, + GtkCssValue *value1, + GtkCssValue *value2) +{ + g_return_val_if_fail (GTK_IS_CSS_STYLE_PROPERTY (property), FALSE); + g_return_val_if_fail (value1 != NULL, FALSE); + g_return_val_if_fail (value2 != NULL, FALSE); + + return property->equal_func (property, value1, value2); +} diff --git a/gtk/gtkcssstylepropertyprivate.h b/gtk/gtkcssstylepropertyprivate.h index a51d455ea..21c57b9e6 100644 --- a/gtk/gtkcssstylepropertyprivate.h +++ b/gtk/gtkcssstylepropertyprivate.h @@ -44,6 +44,9 @@ typedef void (* GtkCssStylePropertyPrintFunc) (GtkCssStyleProperty typedef GtkCssValue * (* GtkCssStylePropertyComputeFunc)(GtkCssStyleProperty *property, GtkStyleContext *context, GtkCssValue *specified); +typedef gboolean (* GtkCssStylePropertyEqualFunc) (GtkCssStyleProperty *property, + GtkCssValue *value1, + GtkCssValue *value2); struct _GtkCssStyleProperty { GtkStyleProperty parent; @@ -56,6 +59,7 @@ struct _GtkCssStyleProperty GtkCssStylePropertyParseFunc parse_value; GtkCssStylePropertyPrintFunc print_value; GtkCssStylePropertyComputeFunc compute_value; + GtkCssStylePropertyEqualFunc equal_func; }; struct _GtkCssStylePropertyClass @@ -88,6 +92,9 @@ GtkCssValue * _gtk_css_style_property_compute_value (GtkCssStyleProp void _gtk_css_style_property_print_value (GtkCssStyleProperty *property, GtkCssValue *value, GString *string); +gboolean _gtk_css_style_property_is_equal (GtkCssStyleProperty *property, + GtkCssValue *value1, + GtkCssValue *value2); G_END_DECLS -- 2.43.2