diff --git a/clutter/clutter-state.c b/clutter/clutter-state.c index c87f66cca..bb355daa0 100644 --- a/clutter/clutter-state.c +++ b/clutter/clutter-state.c @@ -507,8 +507,12 @@ clutter_state_change (ClutterState *state, if (target_state_name == priv->target_state_name) { - /* Avoid transitioning if the desired state is already current */ - return priv->timeline; + /* Avoid transitioning if the desired state is already current, + * unless we're warping to it and the state transition is in + * progress (in that case, immediately warp to the state). + */ + if (!clutter_timeline_is_playing (priv->timeline) || animate) + return priv->timeline; } if (priv->current_animator != NULL)