]> Pileus Git - ~andy/gtk/commitdiff
cssimage: Add an equal vfunc
authorBenjamin Otte <otte@redhat.com>
Thu, 11 Oct 2012 10:10:20 +0000 (12:10 +0200)
committerBenjamin Otte <otte@redhat.com>
Wed, 31 Oct 2012 10:09:10 +0000 (11:09 +0100)
No implementations for it exist yet.

gtk/gtkcssimage.c
gtk/gtkcssimageprivate.h
gtk/gtkcssimagevalue.c

index 924dc2ad2e8db0606ec04cd3b617dac20152d69e..abe95ae6c01cfc1ee8b33035d0140d3f21f84e8a 100644 (file)
@@ -69,6 +69,13 @@ gtk_css_image_real_compute (GtkCssImage             *image,
   return g_object_ref (image);
 }
 
+static gboolean
+gtk_css_image_real_equal (GtkCssImage *image1,
+                          GtkCssImage *image2)
+{
+  return FALSE;
+}
+
 static GtkCssImage *
 gtk_css_image_real_transition (GtkCssImage *start,
                                GtkCssImage *end,
@@ -90,6 +97,7 @@ _gtk_css_image_class_init (GtkCssImageClass *klass)
   klass->get_height = gtk_css_image_real_get_height;
   klass->get_aspect_ratio = gtk_css_image_real_get_aspect_ratio;
   klass->compute = gtk_css_image_real_compute;
+  klass->equal = gtk_css_image_real_equal;
   klass->transition = gtk_css_image_real_transition;
 }
 
@@ -188,6 +196,29 @@ _gtk_css_image_transition (GtkCssImage *start,
   return klass->transition (start, end, property_id, progress);
 }
 
+gboolean
+_gtk_css_image_equal (GtkCssImage *image1,
+                      GtkCssImage *image2)
+{
+  GtkCssImageClass *klass;
+
+  g_return_val_if_fail (image1 == NULL || GTK_IS_CSS_IMAGE (image1), FALSE);
+  g_return_val_if_fail (image2 == NULL || GTK_IS_CSS_IMAGE (image2), FALSE);
+
+  if (image1 == image2)
+    return TRUE;
+
+  if (image1 == NULL || image2 == NULL)
+    return FALSE;
+
+  if (G_OBJECT_TYPE (image1) != G_OBJECT_TYPE (image2))
+    return FALSE;
+
+  klass = GTK_CSS_IMAGE_GET_CLASS (image1);
+
+  return klass->equal (image1, image2);
+}
+
 void
 _gtk_css_image_draw (GtkCssImage        *image,
                      cairo_t            *cr,
index e0b7465b5024df5de8184547db635907c6435e1c..f9e4e41b75c62a56c11dd3f51c36d67151b797d5 100644 (file)
@@ -61,6 +61,9 @@ struct _GtkCssImageClass
                                                     GtkCssComputedValues       *values,
                                                     GtkCssComputedValues       *parent_values,
                                                     GtkCssDependencies         *dependencies);
+  /* compare two images for equality */
+  gboolean     (* equal)                           (GtkCssImage                *image1,
+                                                    GtkCssImage                *image2);
   /* transition between start and end image (end may be NULL), returns new reference */
   GtkCssImage *(* transition)                      (GtkCssImage                *start,
                                                     GtkCssImage                *end,
@@ -95,6 +98,8 @@ GtkCssImage *  _gtk_css_image_compute              (GtkCssImage                *
                                                     GtkCssComputedValues       *values,
                                                     GtkCssComputedValues       *parent_values,
                                                     GtkCssDependencies         *dependencies);
+gboolean       _gtk_css_image_equal                (GtkCssImage                *image1,
+                                                    GtkCssImage                *image2);
 GtkCssImage *  _gtk_css_image_transition           (GtkCssImage                *start,
                                                     GtkCssImage                *end,
                                                     guint                       property_id,
index 17f904c4bac37d3bd2373921ca00280638266400..dac0c2fac8cb974bf2db0c608ab02dc2afc19058 100644 (file)
@@ -63,7 +63,7 @@ static gboolean
 gtk_css_value_image_equal (const GtkCssValue *value1,
                            const GtkCssValue *value2)
 {
-  return value1->image == value2->image;
+  return _gtk_css_image_equal (value1->image, value2->image);
 }
 
 static GtkCssValue *