From 10cd226dfe5fcfd277f9b1986b649bb0617b6b36 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Mon, 11 Nov 2013 07:24:35 -0500 Subject: [PATCH] Progress bar: Handle 'no more pulse' Before smooth animation, stopping the pulse would abruptly stop the bouncy bar. This change makes it so that we slow down for a bit, and then stop. --- gtk/gtkprogressbar.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/gtk/gtkprogressbar.c b/gtk/gtkprogressbar.c index 00080bb3fd..5e3a47d306 100644 --- a/gtk/gtkprogressbar.c +++ b/gtk/gtkprogressbar.c @@ -588,11 +588,17 @@ tick_cb (GtkWidget *widget, g_assert (priv->pulse2 > priv->pulse1); g_assert (frame2 > priv->frame1); + if (frame2 - priv->pulse2 > 3 * (priv->pulse2 - priv->pulse1)) + { + priv->pulse1 = 0; + return G_SOURCE_CONTINUE; + } + /* Determine the fraction to move the block from one frame * to the next when pulse_fraction is how far the block should * move between two calls to gtk_progress_bar_pulse(). */ - fraction = priv->pulse_fraction * (frame2 - priv->frame1) / (priv->pulse2 - priv->pulse1); + fraction = priv->pulse_fraction * (frame2 - priv->frame1) / MAX (frame2 - priv->pulse2, priv->pulse2 - priv->pulse1); priv->frame1 = frame2;