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.
This commit is contained in:
Matthias Clasen 2013-11-11 07:24:35 -05:00
parent ea70c77867
commit 10cd226dfe

View File

@ -588,11 +588,17 @@ tick_cb (GtkWidget *widget,
g_assert (priv->pulse2 > priv->pulse1); g_assert (priv->pulse2 > priv->pulse1);
g_assert (frame2 > priv->frame1); 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 /* Determine the fraction to move the block from one frame
* to the next when pulse_fraction is how far the block should * to the next when pulse_fraction is how far the block should
* move between two calls to gtk_progress_bar_pulse(). * 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; priv->frame1 = frame2;