]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkcssimagecrossfade.c
filechooserbutton: New test for opening the Other item in the combo box and then...
[~andy/gtk] / gtk / gtkcssimagecrossfade.c
index baf1f659f041c2416671928eb01ff0b92496fdcb..1b02af94f73f5e8b6d1cd37f7587d38af3c12346 100644 (file)
@@ -86,6 +86,18 @@ gtk_css_image_cross_fade_get_height (GtkCssImage *image)
   return start_height + (end_height - start_height) * cross_fade->progress;
 }
 
+static gboolean
+gtk_css_image_cross_fade_equal (GtkCssImage *image1,
+                                GtkCssImage *image2)
+{
+  GtkCssImageCrossFade *cross_fade1 = GTK_CSS_IMAGE_CROSS_FADE (image1);
+  GtkCssImageCrossFade *cross_fade2 = GTK_CSS_IMAGE_CROSS_FADE (image2);
+
+  return cross_fade1->progress == cross_fade2->progress &&
+         _gtk_css_image_equal (cross_fade1->start, cross_fade2->start) &&
+         _gtk_css_image_equal (cross_fade1->end, cross_fade2->end);
+}
+
 static void
 gtk_css_image_cross_fade_draw (GtkCssImage        *image,
                                cairo_t            *cr,
@@ -114,6 +126,9 @@ gtk_css_image_cross_fade_draw (GtkCssImage        *image,
 
           cairo_push_group (cr);
 
+          /* performance trick */
+          cairo_reset_clip (cr);
+
           _gtk_css_image_draw (cross_fade->start, cr, width, height);
 
           cairo_push_group (cr);
@@ -231,6 +246,7 @@ _gtk_css_image_cross_fade_class_init (GtkCssImageCrossFadeClass *klass)
 
   image_class->get_width = gtk_css_image_cross_fade_get_width;
   image_class->get_height = gtk_css_image_cross_fade_get_height;
+  image_class->equal = gtk_css_image_cross_fade_equal;
   image_class->draw = gtk_css_image_cross_fade_draw;
   image_class->parse = gtk_css_image_cross_fade_parse;
   image_class->print = gtk_css_image_cross_fade_print;