[gtk+] revealer: Use the same transition animation as GtkStack



commit 81538d492eaf9154f845742a688f0c8d959577ea
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Wed Oct 9 18:29:19 2013 -0400

    revealer: Use the same transition animation as GtkStack

 gtk/gtkrevealer.c |   18 +++++++++++-------
 1 files changed, 11 insertions(+), 7 deletions(-)
---
diff --git a/gtk/gtkrevealer.c b/gtk/gtkrevealer.c
index 09718f3..d872fcd 100644
--- a/gtk/gtkrevealer.c
+++ b/gtk/gtkrevealer.c
@@ -506,11 +506,14 @@ gtk_revealer_set_position (GtkRevealer *revealer,
     g_object_notify (G_OBJECT (revealer), "child-revealed");
 }
 
-static gdouble
-ease_out_quad (gdouble t, gdouble d)
+/* From clutter-easing.c, based on Robert Penner's
+ * infamous easing equations, MIT license.
+ */
+static double
+ease_out_cubic (double t)
 {
-  gdouble p = t / d;
-  return  ((-1.0) * p) * (p - 2);
+  double p = t - 1;
+  return p * p * p + 1;
 }
 
 static void
@@ -520,10 +523,11 @@ gtk_revealer_animate_step (GtkRevealer *revealer,
   GtkRevealerPrivate *priv = gtk_revealer_get_instance_private (revealer);
   gdouble t;
 
-  t = 1.0;
   if (now < priv->end_time)
-      t = (now - priv->start_time) / (gdouble) (priv->end_time - priv->start_time);
-  t = ease_out_quad (t, 1.0);
+    t = (now - priv->start_time) / (gdouble) (priv->end_time - priv->start_time);
+  else
+    t = 1.0;
+  t = ease_out_cubic (t);
 
   gtk_revealer_set_position (revealer,
                             priv->source_pos + (t * (priv->target_pos - priv->source_pos)));


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]