gnome-panel r10819 - trunk/gnome-panel



Author: vuntz
Date: Mon Feb 11 14:55:31 2008
New Revision: 10819
URL: http://svn.gnome.org/viewvc/gnome-panel?rev=10819&view=rev

Log:
2008-02-11  Vincent Untz  <vuntz gnome org>

	Smooth animation between two auto-hide sizes.

	* panel-toplevel.c: (panel_toplevel_start_animation): don't override
	the timeout id if we already have one. Keep the current handler since
	it will work with the new goal too.
	(panel_toplevel_set_auto_hide_size): if the panel is auto-hidden, then
	unhide and hide the panel so that we have an animation towards the new
	size


Modified:
   trunk/gnome-panel/ChangeLog
   trunk/gnome-panel/panel-toplevel.c

Modified: trunk/gnome-panel/panel-toplevel.c
==============================================================================
--- trunk/gnome-panel/panel-toplevel.c	(original)
+++ trunk/gnome-panel/panel-toplevel.c	Mon Feb 11 14:55:31 2008
@@ -3401,8 +3401,9 @@
 	g_get_current_time (&toplevel->priv->animation_end_time);
 	g_time_val_add (&toplevel->priv->animation_end_time, t);
 
-	toplevel->priv->animation_timeout =
-		g_timeout_add (20, (GSourceFunc) panel_toplevel_animation_timeout, toplevel);
+	if (!toplevel->priv->animation_timeout)
+		toplevel->priv->animation_timeout =
+			g_timeout_add (20, (GSourceFunc) panel_toplevel_animation_timeout, toplevel);
 }
 
 void
@@ -4747,8 +4748,13 @@
 	toplevel->priv->auto_hide_size = auto_hide_size;
 
 	if (toplevel->priv->state == PANEL_STATE_AUTO_HIDDEN) {
-		if (panel_toplevel_update_struts (toplevel, FALSE))
-			gtk_widget_queue_resize (GTK_WIDGET (toplevel));
+		if (panel_toplevel_update_struts (toplevel, FALSE)) {
+			if (toplevel->priv->animate) {
+				panel_toplevel_unhide (toplevel);
+				panel_toplevel_hide (toplevel, TRUE, -1);
+			} else
+				gtk_widget_queue_resize (GTK_WIDGET (toplevel));
+		}
 	}
 
 	g_object_notify (G_OBJECT (toplevel), "auto-hide-size");



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