]> Pileus Git - ~andy/gtk/commitdiff
stylecontext: Clear animations for values kept in cache
authorBenjamin Otte <otte@redhat.com>
Mon, 17 Sep 2012 08:53:16 +0000 (10:53 +0200)
committerBenjamin Otte <otte@redhat.com>
Mon, 17 Sep 2012 18:40:01 +0000 (20:40 +0200)
gtk/gtkcsscomputedvalues.c
gtk/gtkcsscomputedvaluesprivate.h
gtk/gtkstylecontext.c

index f9ec618c97674f4dbaebebf9b20e96fe6c94bc04..7ec040ea5887c85d8f1afc17f7eb4916c416a64a 100644 (file)
@@ -565,3 +565,19 @@ _gtk_css_computed_values_is_static (GtkCssComputedValues *values)
 
   return TRUE;
 }
+
+void
+_gtk_css_computed_values_cancel_animations (GtkCssComputedValues *values)
+{
+  g_return_if_fail (GTK_IS_CSS_COMPUTED_VALUES (values));
+
+  if (values->animated_values)
+    {
+      g_ptr_array_unref (values->animated_values);
+      values->animated_values = NULL;
+    }
+
+  g_slist_free_full (values->animations, g_object_unref);
+  values->animations = NULL;
+}
+
index 32b70bc7230569385faffa2fd8abb9e1f196acdb..b9b761846e8a2c8eafda4e7ab3ca8562c0af0b5f 100644 (file)
@@ -94,6 +94,7 @@ void                    _gtk_css_computed_values_create_animations    (GtkCssCom
                                                                        GtkStyleContext          *context);
 GtkBitmask *            _gtk_css_computed_values_advance              (GtkCssComputedValues     *values,
                                                                        gint64                    timestamp);
+void                    _gtk_css_computed_values_cancel_animations    (GtkCssComputedValues     *values);
 gboolean                _gtk_css_computed_values_is_static            (GtkCssComputedValues     *values);
 
 G_END_DECLS
index 538897af2eb25a8ddf8af7309e922e60b7071e81..e36015c407c637e4a551c68715dc23e67fd0a734 100644 (file)
@@ -3173,6 +3173,9 @@ _gtk_style_context_validate (GtkStyleContext  *context,
             change |= GTK_CSS_CHANGE_ANIMATE;
 
           changes = _gtk_css_computed_values_get_difference (data->store, current->store);
+
+          /* In the case where we keep the cache, we want unanimated values */
+          _gtk_css_computed_values_cancel_animations (current->store);
         }
       else
         {