[gtk+] cssimage: Add an equal vfunc
- From: Benjamin Otte <otte src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] cssimage: Add an equal vfunc
- Date: Wed, 31 Oct 2012 10:57:27 +0000 (UTC)
commit c13efbf8b07145339c08652ade0b438a1f17d137
Author: Benjamin Otte <otte redhat com>
Date: Thu Oct 11 12:10:20 2012 +0200
cssimage: Add an equal vfunc
No implementations for it exist yet.
gtk/gtkcssimage.c | 31 +++++++++++++++++++++++++++++++
gtk/gtkcssimageprivate.h | 5 +++++
gtk/gtkcssimagevalue.c | 2 +-
3 files changed, 37 insertions(+), 1 deletions(-)
---
diff --git a/gtk/gtkcssimage.c b/gtk/gtkcssimage.c
index 924dc2a..abe95ae 100644
--- a/gtk/gtkcssimage.c
+++ b/gtk/gtkcssimage.c
@@ -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,
diff --git a/gtk/gtkcssimageprivate.h b/gtk/gtkcssimageprivate.h
index e0b7465..f9e4e41 100644
--- a/gtk/gtkcssimageprivate.h
+++ b/gtk/gtkcssimageprivate.h
@@ -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,
diff --git a/gtk/gtkcssimagevalue.c b/gtk/gtkcssimagevalue.c
index 17f904c..dac0c2f 100644
--- a/gtk/gtkcssimagevalue.c
+++ b/gtk/gtkcssimagevalue.c
@@ -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 *
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]