From fe89e710eaecb4018284f77bc978a8a2d97b6337 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Tue, 10 Apr 2012 15:50:00 +0200 Subject: [PATCH] stylecontext: Add public API to stop animations ... and use it. Of course, there still are no animations, so we don't turn anything off yet. --- gtk/gtkstylecontext.c | 15 ++++++++++++++- gtk/gtkstylecontextprivate.h | 2 ++ gtk/gtkwidget.c | 3 +++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/gtk/gtkstylecontext.c b/gtk/gtkstylecontext.c index 8375328f94..065107cd17 100644 --- a/gtk/gtkstylecontext.c +++ b/gtk/gtkstylecontext.c @@ -765,7 +765,7 @@ gtk_style_context_finalize (GObject *object) style_context = GTK_STYLE_CONTEXT (object); priv = style_context->priv; - gtk_style_context_stop_animating (style_context); + _gtk_style_context_stop_animations (style_context); /* children hold a reference to us */ g_assert (priv->children == NULL); @@ -1023,6 +1023,8 @@ _gtk_style_context_set_widget (GtkStyleContext *context, context->priv->widget = widget; + _gtk_style_context_stop_animations (context); + _gtk_style_context_queue_invalidate (context, GTK_CSS_CHANGE_ANY_SELF); } @@ -2915,6 +2917,17 @@ gtk_style_context_do_invalidate (GtkStyleContext *context) priv->invalidating_context = FALSE; } +void +_gtk_style_context_stop_animations (GtkStyleContext *context) +{ + g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); + + if (!gtk_style_context_is_animating (context)) + return; + + gtk_style_context_stop_animating (context); +} + void _gtk_style_context_validate (GtkStyleContext *context, gint64 timestamp, diff --git a/gtk/gtkstylecontextprivate.h b/gtk/gtkstylecontextprivate.h index c6ab2cc0c8..a62b4675f4 100644 --- a/gtk/gtkstylecontextprivate.h +++ b/gtk/gtkstylecontextprivate.h @@ -52,6 +52,8 @@ void _gtk_style_context_get_cursor_color (GtkStyleContext *c GdkRGBA *primary_color, GdkRGBA *secondary_color); +void _gtk_style_context_stop_animations (GtkStyleContext *context); + G_END_DECLS #endif /* __GTK_STYLE_CONTEXT_PRIVATE_H__ */ diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 3c709ca052..5b2aa3f719 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -4126,6 +4126,9 @@ gtk_widget_real_hide (GtkWidget *widget) if (gtk_widget_get_mapped (widget)) gtk_widget_unmap (widget); + + if (widget->priv->context) + _gtk_style_context_stop_animations (widget->priv->context); } }