]> Pileus Git - ~andy/gtk/commitdiff
styleproperty: Add a function to compare values for equality
authorBenjamin Otte <otte@redhat.com>
Fri, 23 Mar 2012 22:52:48 +0000 (23:52 +0100)
committerBenjamin Otte <otte@redhat.com>
Tue, 17 Apr 2012 06:59:10 +0000 (08:59 +0200)
and default to never compare them as equal.

gtk/gtkcssstyleproperty.c
gtk/gtkcssstylepropertyprivate.h

index 8839cd68fbcb4f2bf078aea2bb357d250655a420..95b8ba16691372b32b9788b7f42056a97411b8e3 100644 (file)
@@ -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);
+}
index a51d455eaa51a31c5ca7800e9edca4e5da318162..21c57b9e654d13a307dc9361df3d324e7a9bd783 100644 (file)
@@ -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