diff options
Diffstat (limited to 'gtk/gtkadjustment.c')
-rw-r--r-- | gtk/gtkadjustment.c | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/gtk/gtkadjustment.c b/gtk/gtkadjustment.c index 51714177dd..a124bac471 100644 --- a/gtk/gtkadjustment.c +++ b/gtk/gtkadjustment.c @@ -962,13 +962,25 @@ gtk_adjustment_enable_animation (GtkAdjustment *adjustment, { GtkAdjustmentPrivate *priv = adjustment->priv; - if (priv->clock) - g_object_unref (priv->clock); + if (priv->clock != clock) + { + if (priv->tick_id) + { + adjustment_set_value (adjustment, priv->target); - priv->clock = clock; + g_signal_handler_disconnect (priv->clock, priv->tick_id); + priv->tick_id = 0; + gdk_frame_clock_end_updating (priv->clock); + } - if (priv->clock) - g_object_ref (priv->clock); + if (priv->clock) + g_object_unref (priv->clock); + + priv->clock = clock; + + if (priv->clock) + g_object_ref (priv->clock); + } priv->duration = duration; } |