]> Pileus Git - ~andy/gtk/blobdiff - gtk/gtkcssimagevalue.c
filechooserbutton: Update the combo box even after the dialog is cancelled
[~andy/gtk] / gtk / gtkcssimagevalue.c
index f9028ae55a1a48dc137cd710637927b91c210add..dac0c2fac8cb974bf2db0c608ab02dc2afc19058 100644 (file)
@@ -19,7 +19,7 @@
 
 #include "gtkcssimagevalueprivate.h"
 
-#include "gtkstylepropertyprivate.h"
+#include "gtkcssimagecrossfadeprivate.h"
 
 struct _GtkCssValue {
   GTK_CSS_VALUE_BASE
@@ -33,11 +33,53 @@ gtk_css_value_image_free (GtkCssValue *value)
   g_slice_free (GtkCssValue, value);
 }
 
+static GtkCssValue *
+gtk_css_value_image_compute (GtkCssValue             *value,
+                             guint                    property_id,
+                             GtkStyleProviderPrivate *provider,
+                             GtkCssComputedValues    *values,
+                             GtkCssComputedValues    *parent_values,
+                             GtkCssDependencies      *dependencies)
+{
+  GtkCssImage *image, *computed;
+  
+  image = _gtk_css_image_value_get_image (value);
+
+  if (image == NULL)
+    return _gtk_css_value_ref (value);
+
+  computed = _gtk_css_image_compute (image, property_id, provider, values, parent_values, dependencies);
+
+  if (computed == image)
+    {
+      g_object_unref (computed);
+      return _gtk_css_value_ref (value);
+    }
+
+  return _gtk_css_image_value_new (computed);
+}
+
 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 *
+gtk_css_value_image_transition (GtkCssValue *start,
+                                GtkCssValue *end,
+                                guint        property_id,
+                                double       progress)
+{
+  GtkCssImage *transition;
+
+  transition = _gtk_css_image_transition (_gtk_css_image_value_get_image (start),
+                                          _gtk_css_image_value_get_image (end),
+                                          property_id,
+                                          progress);
+      
+  return _gtk_css_image_value_new (transition);
 }
 
 static void
@@ -52,7 +94,9 @@ gtk_css_value_image_print (const GtkCssValue *value,
 
 static const GtkCssValueClass GTK_CSS_VALUE_IMAGE = {
   gtk_css_value_image_free,
+  gtk_css_value_image_compute,
   gtk_css_value_image_equal,
+  gtk_css_value_image_transition,
   gtk_css_value_image_print
 };