summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRay Strode <rstrode@fedoraproject.org>2008-11-03 23:06:33 +0000
committerRay Strode <rstrode@fedoraproject.org>2008-11-03 23:06:33 +0000
commit537397c929e01e7b0f23bc44db7248c5445b4ee6 (patch)
tree612150e6234cc87cf9eb5f7a31f6de50b52a77ef
parentd2a851845716ed6e3272e55a4e6ce9cbd3e06f71 (diff)
downloadgnome-panel-537397c929e01e7b0f23bc44db7248c5445b4ee6.tar.gz
gnome-panel-537397c929e01e7b0f23bc44db7248c5445b4ee6.tar.xz
gnome-panel-537397c929e01e7b0f23bc44db7248c5445b4ee6.zip
- Fix up panel slide in patch tognome-panel-2_24_1-2_fc10
1) not have odd effects with vertical panels 2) set up struts earlier
-rw-r--r--gnome-panel-2.24.1-smoother-slide-in.patch (renamed from gnome-panel-2.24.0-smoother-slide-in.patch)631
-rw-r--r--gnome-panel.spec9
2 files changed, 419 insertions, 221 deletions
diff --git a/gnome-panel-2.24.0-smoother-slide-in.patch b/gnome-panel-2.24.1-smoother-slide-in.patch
index e423679..9b2c152 100644
--- a/gnome-panel-2.24.0-smoother-slide-in.patch
+++ b/gnome-panel-2.24.1-smoother-slide-in.patch
@@ -1,198 +1,13 @@
+commit 37414a0c6ee5e655b72742b3279f363990c444ae
Author: Ray Strode <rstrode@redhat.com>
-Date: Wed Oct 22 08:56:23 2008 -0400
+Date: Mon Nov 3 17:19:13 2008 -0500
- Split animation end side calculation to new func
-
- We're going to need it in other places than
- start_animation.
-
---- gnome-panel-2.24.0/gnome-panel/panel-toplevel.c
-+++ gnome-panel-2.24.0/gnome-panel/panel-toplevel.c
-@@ -3334,22 +3334,19 @@ panel_toplevel_get_animation_time (PanelToplevel *toplevel)
- }
-
- static void
--panel_toplevel_start_animation (PanelToplevel *toplevel)
-+panel_toplevel_calculate_animation_end_geometry (PanelToplevel *toplevel)
- {
- GdkScreen *screen;
- int monitor_width, monitor_height;
-- int deltax, deltay, deltaw = 0, deltah = 0;
-- int cur_x = -1, cur_y = -1;
-- long t;
--
-- screen = panel_toplevel_get_monitor_geometry (
-- toplevel, NULL, NULL, &monitor_width, &monitor_height);
-
- toplevel->priv->animation_end_x = toplevel->priv->x;
- toplevel->priv->animation_end_y = toplevel->priv->y;
- toplevel->priv->animation_end_width = -1;
- toplevel->priv->animation_end_height = -1;
-
-+ screen = panel_toplevel_get_monitor_geometry (
-+ toplevel, NULL, NULL, &monitor_width, &monitor_height);
-+
- if (!toplevel->priv->expand) {
-
- if (toplevel->priv->x_centered)
-@@ -3380,6 +3377,18 @@ panel_toplevel_start_animation (PanelToplevel *toplevel)
- &toplevel->priv->animation_end_width,
- &toplevel->priv->animation_end_height);
-
-+}
-+
-+static void
-+panel_toplevel_start_animation (PanelToplevel *toplevel)
-+{
-+ GdkScreen *screen;
-+ int deltax, deltay, deltaw = 0, deltah = 0;
-+ int cur_x = -1, cur_y = -1;
-+ long t;
-+
-+ panel_toplevel_calculate_animation_end_geometry (toplevel);
-+
- toplevel->priv->animating = TRUE;
-
- panel_toplevel_update_struts (toplevel, TRUE);
-@@ -3392,6 +3401,8 @@ panel_toplevel_start_animation (PanelToplevel *toplevel)
-
- gdk_window_get_origin (GTK_WIDGET (toplevel)->window, &cur_x, &cur_y);
-
-+ screen = gtk_widget_get_screen (GTK_WIDGET (toplevel));
-+
- cur_x -= panel_multiscreen_x (screen, toplevel->priv->monitor);
- cur_y -= panel_multiscreen_y (screen, toplevel->priv->monitor);
-
-
-Author: Ray Strode <rstrode@redhat.com>
-Date: Wed Oct 22 10:27:00 2008 -0400
-
- Don't change struts while animating
-
---- gnome-panel-2.24.0/gnome-panel/panel-toplevel.c
-+++ gnome-panel-2.24.0/gnome-panel/panel-toplevel.c
-@@ -231,6 +231,8 @@ enum {
- static guint toplevel_signals [LAST_SIGNAL] = { 0 };
- static GSList *toplevel_list = NULL;
-
-+static void panel_toplevel_calculate_animation_end_geometry (PanelToplevel *toplevel);
-+
- GSList *
- panel_toplevel_list_toplevels (void)
- {
-@@ -1372,7 +1374,7 @@ panel_toplevel_get_effective_auto_hide_size (PanelToplevel *toplevel)
- }
-
- static gboolean
--panel_toplevel_update_struts (PanelToplevel *toplevel, gboolean end_of_animation)
-+panel_toplevel_update_struts (PanelToplevel *toplevel)
- {
- PanelOrientation orientation;
- GdkScreen *screen;
-@@ -1382,6 +1384,8 @@ panel_toplevel_update_struts (PanelToplevel *toplevel, gboolean end_of_animation
- int monitor_x, monitor_y;
- int monitor_width, monitor_height;
-
-+ panel_toplevel_calculate_animation_end_geometry (toplevel);
-+
- if (!toplevel->priv->updated_geometry_initial)
- return FALSE;
-
-@@ -1397,25 +1401,18 @@ panel_toplevel_update_struts (PanelToplevel *toplevel, gboolean end_of_animation
- &monitor_width,
- &monitor_height);
-
-- if (end_of_animation) {
-- x = toplevel->priv->animation_end_x;
-- y = toplevel->priv->animation_end_y;
-- x += panel_multiscreen_x (screen, toplevel->priv->monitor);
-- x += panel_multiscreen_y (screen, toplevel->priv->monitor);
-- if (toplevel->priv->animation_end_width != -1)
-- width = toplevel->priv->animation_end_width;
-- else
-- width = toplevel->priv->geometry.width;
-- if (toplevel->priv->animation_end_height != -1)
-- height = toplevel->priv->animation_end_height;
-- else
-- height = toplevel->priv->geometry.height;
-- } else {
-- x = toplevel->priv->geometry.x;
-- y = toplevel->priv->geometry.y;
-- width = toplevel->priv->geometry.width;
-+ x = toplevel->priv->animation_end_x;
-+ y = toplevel->priv->animation_end_y;
-+ x += panel_multiscreen_x (screen, toplevel->priv->monitor);
-+ x += panel_multiscreen_y (screen, toplevel->priv->monitor);
-+ if (toplevel->priv->animation_end_width != -1)
-+ width = toplevel->priv->animation_end_width;
-+ else
-+ width = toplevel->priv->geometry.width;
-+ if (toplevel->priv->animation_end_height != -1)
-+ height = toplevel->priv->animation_end_height;
-+ else
- height = toplevel->priv->geometry.height;
-- }
-
- orientation = toplevel->priv->orientation;
-
-@@ -2499,7 +2496,7 @@ panel_toplevel_update_geometry (PanelToplevel *toplevel,
- panel_toplevel_update_size (toplevel, requisition);
- panel_toplevel_update_position (toplevel);
-
-- panel_toplevel_update_struts (toplevel, FALSE);
-+ panel_toplevel_update_struts (toplevel);
- if (toplevel->priv->state == PANEL_STATE_NORMAL ||
- toplevel->priv->state == PANEL_STATE_AUTO_HIDDEN) {
- panel_struts_update_toplevel_geometry (toplevel,
-@@ -2903,6 +2900,7 @@ panel_toplevel_initially_hide (PanelToplevel *toplevel)
- toplevel->priv->state = PANEL_STATE_AUTO_HIDDEN;
- gtk_widget_queue_resize (GTK_WIDGET (toplevel));
-
-+ panel_toplevel_update_struts (toplevel);
- panel_toplevel_queue_auto_unhide (toplevel);
- } else
- toplevel->priv->initial_animation_done = TRUE;
-@@ -3391,13 +3389,12 @@ panel_toplevel_start_animation (PanelToplevel *toplevel)
-
- toplevel->priv->animating = TRUE;
-
-- panel_toplevel_update_struts (toplevel, TRUE);
- panel_struts_update_toplevel_geometry (toplevel,
- &toplevel->priv->animation_end_x,
- &toplevel->priv->animation_end_y,
- &toplevel->priv->animation_end_width,
- &toplevel->priv->animation_end_height);
-- panel_toplevel_update_struts (toplevel, FALSE);
-+ panel_toplevel_update_struts (toplevel);
-
- gdk_window_get_origin (GTK_WIDGET (toplevel)->window, &cur_x, &cur_y);
-
-@@ -4794,7 +4791,7 @@ panel_toplevel_set_auto_hide_size (PanelToplevel *toplevel,
- toplevel->priv->auto_hide_size = auto_hide_size;
-
- if (toplevel->priv->state == PANEL_STATE_AUTO_HIDDEN) {
-- if (panel_toplevel_update_struts (toplevel, FALSE)) {
-+ if (panel_toplevel_update_struts (toplevel)) {
- if (toplevel->priv->animate) {
- panel_toplevel_unhide (toplevel);
- panel_toplevel_hide (toplevel, TRUE, -1);
-@@ -4970,7 +4967,7 @@ panel_toplevel_set_auto_hide (PanelToplevel *toplevel,
- else
- panel_toplevel_queue_auto_unhide (toplevel);
-
-- if (panel_toplevel_update_struts (toplevel, FALSE))
-+ if (panel_toplevel_update_struts (toplevel))
- gtk_widget_queue_resize (GTK_WIDGET (toplevel));
-
- g_object_notify (G_OBJECT (toplevel), "auto-hide");
-
-Author: Ray Strode <rstrode@redhat.com>
-Date: Wed Oct 22 10:55:48 2008 -0400
+ Don't slide panel down until applets load
- Delay slide out until applets register
-
---- gnome-panel-2.24.0/gnome-panel/applet.c
-+++ gnome-panel-2.24.0/gnome-panel/applet.c
+diff --git a/gnome-panel/applet.c b/gnome-panel/applet.c
+index 165ded5..6c880a4 100644
+--- a/gnome-panel/applet.c
++++ b/gnome-panel/applet.c
@@ -792,6 +792,7 @@ typedef struct {
} PanelAppletToLoad;
@@ -316,8 +131,10 @@ Date: Wed Oct 22 10:55:48 2008 -0400
return TRUE;
}
---- gnome-panel-2.24.0/gnome-panel/applet.h
-+++ gnome-panel-2.24.0/gnome-panel/applet.h
+diff --git a/gnome-panel/applet.h b/gnome-panel/applet.h
+index 8790229..16cfa46 100644
+--- a/gnome-panel/applet.h
++++ b/gnome-panel/applet.h
@@ -53,6 +53,7 @@ AppletInfo *panel_applet_register (GtkWidget *applet,
gboolean exactpos,
PanelObjectType type,
@@ -326,17 +143,11 @@ Date: Wed Oct 22 10:55:48 2008 -0400
const char *panel_applet_get_id (AppletInfo *info);
const char *panel_applet_get_id_by_widget (GtkWidget *widget);
---- gnome-panel-2.24.0/gnome-panel/panel-applet-frame.c
-+++ gnome-panel-2.24.0/gnome-panel/panel-applet-frame.c
-@@ -1286,6 +1286,7 @@ panel_applet_frame_activated (CORBA_Object object,
- if (!in_default_panel_config (frame_act->id)) {
- panel_applet_frame_loading_failed (frame, frame_act->id);
- }
-+ panel_applet_stop_loading (frame_act->id);
- g_free (frame_act->id);
- g_free (frame_act);
- return;
-@@ -1328,6 +1329,7 @@ panel_applet_frame_activated (CORBA_Object object,
+diff --git a/gnome-panel/panel-applet-frame.c b/gnome-panel/panel-applet-frame.c
+index 58f4fb2..8aafd83 100644
+--- a/gnome-panel/panel-applet-frame.c
++++ b/gnome-panel/panel-applet-frame.c
+@@ -1311,6 +1312,7 @@ panel_applet_frame_activated (CORBA_Object object,
panel_applet_frame_loading_failed (frame, frame_act->id);
CORBA_exception_free (&corba_ev);
bonobo_object_release_unref (object, NULL);
@@ -344,7 +155,7 @@ Date: Wed Oct 22 10:55:48 2008 -0400
g_free (frame_act->id);
g_free (frame_act);
g_free (error);
-@@ -1344,6 +1346,7 @@ panel_applet_frame_activated (CORBA_Object object,
+@@ -1327,6 +1329,7 @@ panel_applet_frame_activated (CORBA_Object object,
g_warning (G_STRLOC ": failed to load applet %s",
frame->priv->iid);
panel_applet_frame_loading_failed (frame, frame_act->id);
@@ -352,7 +163,7 @@ Date: Wed Oct 22 10:55:48 2008 -0400
g_free (frame_act->id);
g_free (frame_act);
return;
-@@ -1355,6 +1358,7 @@ panel_applet_frame_activated (CORBA_Object object,
+@@ -1338,6 +1341,7 @@ panel_applet_frame_activated (CORBA_Object object,
"(cannot get control frame)", frame->priv->iid);
panel_applet_frame_loading_failed (frame, frame_act->id);
gtk_object_sink (GTK_OBJECT (widget));
@@ -360,7 +171,7 @@ Date: Wed Oct 22 10:55:48 2008 -0400
g_free (frame_act->id);
g_free (frame_act);
return;
-@@ -1371,6 +1375,7 @@ panel_applet_frame_activated (CORBA_Object object,
+@@ -1354,6 +1358,7 @@ panel_applet_frame_activated (CORBA_Object object,
frame->priv->iid, error);
panel_applet_frame_loading_failed (frame, frame_act->id);
gtk_object_sink (GTK_OBJECT (widget));
@@ -368,7 +179,7 @@ Date: Wed Oct 22 10:55:48 2008 -0400
g_free (frame_act->id);
g_free (frame_act);
g_free (error);
-@@ -1394,6 +1399,7 @@ panel_applet_frame_activated (CORBA_Object object,
+@@ -1377,6 +1382,7 @@ panel_applet_frame_activated (CORBA_Object object,
frame->priv->iid, error);
panel_applet_frame_loading_failed (frame, frame_act->id);
gtk_object_sink (GTK_OBJECT (widget));
@@ -376,7 +187,7 @@ Date: Wed Oct 22 10:55:48 2008 -0400
g_free (frame_act->id);
g_free (frame_act);
g_free (error);
-@@ -1418,6 +1424,7 @@ panel_applet_frame_activated (CORBA_Object object,
+@@ -1401,6 +1407,7 @@ panel_applet_frame_activated (CORBA_Object object,
"(cannot get control)", frame->priv->iid);
panel_applet_frame_loading_failed (frame, frame_act->id);
gtk_object_sink (GTK_OBJECT (widget));
@@ -384,7 +195,7 @@ Date: Wed Oct 22 10:55:48 2008 -0400
g_free (frame_act->id);
g_free (frame_act);
return;
-@@ -1430,6 +1437,7 @@ panel_applet_frame_activated (CORBA_Object object,
+@@ -1413,6 +1420,7 @@ panel_applet_frame_activated (CORBA_Object object,
"(cannot get applet shell)", frame->priv->iid);
panel_applet_frame_loading_failed (frame, frame_act->id);
gtk_object_sink (GTK_OBJECT (widget));
@@ -392,7 +203,7 @@ Date: Wed Oct 22 10:55:48 2008 -0400
g_free (frame_act->id);
g_free (frame_act);
return;
-@@ -1461,6 +1469,7 @@ panel_applet_frame_activated (CORBA_Object object,
+@@ -1444,6 +1452,7 @@ panel_applet_frame_activated (CORBA_Object object,
panel_lockdown_notify_add (G_CALLBACK (panel_applet_frame_sync_menu_state),
frame);
@@ -400,9 +211,11 @@ Date: Wed Oct 22 10:55:48 2008 -0400
g_free (frame_act->id);
g_free (frame_act);
}
---- gnome-panel-2.24.0/gnome-panel/panel-toplevel.c
-+++ gnome-panel-2.24.0/gnome-panel/panel-toplevel.c
-@@ -2897,11 +2897,14 @@ panel_toplevel_initially_hide (PanelToplevel *toplevel)
+diff --git a/gnome-panel/panel-toplevel.c b/gnome-panel/panel-toplevel.c
+index 5d8b8d4..37fc5f0 100644
+--- a/gnome-panel/panel-toplevel.c
++++ b/gnome-panel/panel-toplevel.c
+@@ -2900,10 +2900,14 @@ panel_toplevel_initially_hide (PanelToplevel *toplevel)
if (!toplevel->priv->attached) {
toplevel->priv->initial_animation_done = FALSE;
@@ -413,12 +226,12 @@ Date: Wed Oct 22 10:55:48 2008 -0400
toplevel->priv->state = PANEL_STATE_AUTO_HIDDEN;
gtk_widget_queue_resize (GTK_WIDGET (toplevel));
- panel_toplevel_update_struts (toplevel);
- panel_toplevel_queue_auto_unhide (toplevel);
++ panel_toplevel_update_struts (toplevel, FALSE);
} else
toplevel->priv->initial_animation_done = TRUE;
-@@ -3646,6 +3649,17 @@ panel_toplevel_queue_auto_unhide (PanelToplevel *toplevel)
+@@ -3638,6 +3642,17 @@ panel_toplevel_queue_auto_unhide (PanelToplevel *toplevel)
toplevel);
}
@@ -436,8 +249,10 @@ Date: Wed Oct 22 10:55:48 2008 -0400
static gboolean
panel_toplevel_enter_notify_event (GtkWidget *widget,
GdkEventCrossing *event)
---- gnome-panel-2.24.0/gnome-panel/panel-toplevel.h
-+++ gnome-panel-2.24.0/gnome-panel/panel-toplevel.h
+diff --git a/gnome-panel/panel-toplevel.h b/gnome-panel/panel-toplevel.h
+index 81e6c76..60400ea 100644
+--- a/gnome-panel/panel-toplevel.h
++++ b/gnome-panel/panel-toplevel.h
@@ -136,6 +136,7 @@ void panel_toplevel_hide (PanelToplevel
void panel_toplevel_unhide (PanelToplevel *toplevel);
void panel_toplevel_queue_auto_hide (PanelToplevel *toplevel);
@@ -446,3 +261,381 @@ Date: Wed Oct 22 10:55:48 2008 -0400
void panel_toplevel_push_autohide_disabler (PanelToplevel *toplevel);
void panel_toplevel_pop_autohide_disabler (PanelToplevel *toplevel);
+
+commit e0ab832dcf9a2bf7889abef798b56b67bcb2b167
+Author: Ray Strode <rstrode@redhat.com>
+Date: Mon Nov 3 11:50:16 2008 -0500
+
+ Split animation end side calculation to new func
+
+ We're going to need it in other places than
+ start_animation.
+
+diff --git a/gnome-panel/panel-toplevel.c b/gnome-panel/panel-toplevel.c
+index 37fc5f0..0962659 100644
+--- a/gnome-panel/panel-toplevel.c
++++ b/gnome-panel/panel-toplevel.c
+@@ -3338,22 +3338,19 @@ panel_toplevel_get_animation_time (PanelToplevel *toplevel)
+ }
+
+ static void
+-panel_toplevel_start_animation (PanelToplevel *toplevel)
++panel_toplevel_calculate_animation_end_geometry (PanelToplevel *toplevel)
+ {
+ GdkScreen *screen;
+ int monitor_width, monitor_height;
+- int deltax, deltay, deltaw = 0, deltah = 0;
+- int cur_x = -1, cur_y = -1;
+- long t;
+-
+- screen = panel_toplevel_get_monitor_geometry (
+- toplevel, NULL, NULL, &monitor_width, &monitor_height);
+
+ toplevel->priv->animation_end_x = toplevel->priv->x;
+ toplevel->priv->animation_end_y = toplevel->priv->y;
+ toplevel->priv->animation_end_width = -1;
+ toplevel->priv->animation_end_height = -1;
+
++ screen = panel_toplevel_get_monitor_geometry (
++ toplevel, NULL, NULL, &monitor_width, &monitor_height);
++
+ if (!toplevel->priv->expand) {
+
+ if (toplevel->priv->x_centered)
+@@ -3384,6 +3381,18 @@ panel_toplevel_start_animation (PanelToplevel *toplevel)
+ &toplevel->priv->animation_end_width,
+ &toplevel->priv->animation_end_height);
+
++}
++
++static void
++panel_toplevel_start_animation (PanelToplevel *toplevel)
++{
++ GdkScreen *screen;
++ int deltax, deltay, deltaw = 0, deltah = 0;
++ int cur_x = -1, cur_y = -1;
++ long t;
++
++ panel_toplevel_calculate_animation_end_geometry (toplevel);
++
+ toplevel->priv->animating = TRUE;
+
+ panel_toplevel_update_struts (toplevel, TRUE);
+@@ -3396,6 +3405,8 @@ panel_toplevel_start_animation (PanelToplevel *toplevel)
+
+ gdk_window_get_origin (GTK_WIDGET (toplevel)->window, &cur_x, &cur_y);
+
++ screen = gtk_widget_get_screen (GTK_WIDGET (toplevel));
++
+ cur_x -= panel_multiscreen_x (screen, toplevel->priv->monitor);
+ cur_y -= panel_multiscreen_y (screen, toplevel->priv->monitor);
+
+
+commit 7c9b2b501b3b3c83dc030de70f6d13e76c0c328e
+Author: Ray Strode <rstrode@redhat.com>
+Date: Mon Nov 3 17:20:09 2008 -0500
+
+ Don't change struts while animating
+
+diff --git a/gnome-panel/panel-toplevel.c b/gnome-panel/panel-toplevel.c
+index 0962659..bef6a02 100644
+--- a/gnome-panel/panel-toplevel.c
++++ b/gnome-panel/panel-toplevel.c
+@@ -188,7 +188,8 @@ struct _PanelToplevelPrivate {
+ /* flag to see if we have already done geometry updating,
+ if not then we're still loading and can ignore many things */
+ guint updated_geometry_initial : 1;
+- /* flag to see if we have done the initial animation */
++ /* flags to see if we have done the initial animation */
++ guint initial_animation_started : 1;
+ guint initial_animation_done : 1;
+ };
+
+@@ -231,6 +232,8 @@ enum {
+ static guint toplevel_signals [LAST_SIGNAL] = { 0 };
+ static GSList *toplevel_list = NULL;
+
++static void panel_toplevel_calculate_animation_end_geometry (PanelToplevel *toplevel);
++
+ GSList *
+ panel_toplevel_list_toplevels (void)
+ {
+@@ -1372,7 +1375,7 @@ panel_toplevel_get_effective_auto_hide_size (PanelToplevel *toplevel)
+ }
+
+ static gboolean
+-panel_toplevel_update_struts (PanelToplevel *toplevel, gboolean end_of_animation)
++panel_toplevel_update_struts (PanelToplevel *toplevel)
+ {
+ PanelOrientation orientation;
+ GdkScreen *screen;
+@@ -1382,6 +1385,8 @@ panel_toplevel_update_struts (PanelToplevel *toplevel, gboolean end_of_animation
+ int monitor_x, monitor_y;
+ int monitor_width, monitor_height;
+
++ panel_toplevel_calculate_animation_end_geometry (toplevel);
++
+ if (!toplevel->priv->updated_geometry_initial)
+ return FALSE;
+
+@@ -1397,25 +1402,18 @@ panel_toplevel_update_struts (PanelToplevel *toplevel, gboolean end_of_animation
+ &monitor_width,
+ &monitor_height);
+
+- if (end_of_animation) {
+- x = toplevel->priv->animation_end_x;
+- y = toplevel->priv->animation_end_y;
+- x += panel_multiscreen_x (screen, toplevel->priv->monitor);
+- x += panel_multiscreen_y (screen, toplevel->priv->monitor);
+- if (toplevel->priv->animation_end_width != -1)
+- width = toplevel->priv->animation_end_width;
+- else
+- width = toplevel->priv->geometry.width;
+- if (toplevel->priv->animation_end_height != -1)
+- height = toplevel->priv->animation_end_height;
+- else
+- height = toplevel->priv->geometry.height;
+- } else {
+- x = toplevel->priv->geometry.x;
+- y = toplevel->priv->geometry.y;
+- width = toplevel->priv->geometry.width;
++ x = toplevel->priv->animation_end_x;
++ y = toplevel->priv->animation_end_y;
++ x += panel_multiscreen_x (screen, toplevel->priv->monitor);
++ x += panel_multiscreen_y (screen, toplevel->priv->monitor);
++ if (toplevel->priv->animation_end_width != -1)
++ width = toplevel->priv->animation_end_width;
++ else
++ width = toplevel->priv->geometry.width;
++ if (toplevel->priv->animation_end_height != -1)
++ height = toplevel->priv->animation_end_height;
++ else
+ height = toplevel->priv->geometry.height;
+- }
+
+ orientation = toplevel->priv->orientation;
+
+@@ -1827,7 +1825,7 @@ panel_toplevel_update_auto_hide_position (PanelToplevel *toplevel,
+ height = toplevel->priv->original_height;
+ snap_tolerance = toplevel->priv->snap_tolerance;
+
+- if (toplevel->priv->initial_animation_done) {
++ if (toplevel->priv->initial_animation_started) {
+ auto_hide_size = panel_toplevel_get_effective_auto_hide_size (toplevel);
+ } else {
+ /* when loading, we animate from outside the screen */
+@@ -2029,6 +2027,7 @@ panel_toplevel_update_animating_position (PanelToplevel *toplevel)
+ if (toplevel->priv->geometry.x - monitor_offset_x == toplevel->priv->animation_end_x &&
+ toplevel->priv->geometry.y - monitor_offset_y == toplevel->priv->animation_end_y) {
+ toplevel->priv->animating = FALSE;
++ toplevel->priv->initial_animation_done = TRUE;
+
+ if (toplevel->priv->attached && panel_toplevel_get_is_hidden (toplevel))
+ gtk_widget_unmap (GTK_WIDGET (toplevel));
+@@ -2499,7 +2498,12 @@ panel_toplevel_update_geometry (PanelToplevel *toplevel,
+ panel_toplevel_update_size (toplevel, requisition);
+ panel_toplevel_update_position (toplevel);
+
+- panel_toplevel_update_struts (toplevel, FALSE);
++ panel_toplevel_update_struts (toplevel);
++
++ if (toplevel->priv->animating) {
++ return;
++ }
++
+ if (toplevel->priv->state == PANEL_STATE_NORMAL ||
+ toplevel->priv->state == PANEL_STATE_AUTO_HIDDEN) {
+ panel_struts_update_toplevel_geometry (toplevel,
+@@ -2898,6 +2902,7 @@ static void
+ panel_toplevel_initially_hide (PanelToplevel *toplevel)
+ {
+ if (!toplevel->priv->attached) {
++ toplevel->priv->initial_animation_started = FALSE;
+ toplevel->priv->initial_animation_done = FALSE;
+
+ /* We start the panel off hidden until all the
+@@ -2907,9 +2912,11 @@ panel_toplevel_initially_hide (PanelToplevel *toplevel)
+ toplevel->priv->state = PANEL_STATE_AUTO_HIDDEN;
+ gtk_widget_queue_resize (GTK_WIDGET (toplevel));
+
+- panel_toplevel_update_struts (toplevel, FALSE);
+- } else
++ panel_toplevel_update_struts (toplevel);
++ } else {
++ toplevel->priv->initial_animation_started = TRUE;
+ toplevel->priv->initial_animation_done = TRUE;
++ }
+
+ }
+
+@@ -3298,6 +3305,7 @@ panel_toplevel_animation_timeout (PanelToplevel *toplevel)
+ toplevel->priv->animation_end_time.tv_sec = 0xdead;
+ toplevel->priv->animation_end_time.tv_usec = 0xdead;
+ toplevel->priv->animation_timeout = 0;
++ toplevel->priv->initial_animation_started = TRUE;
+ toplevel->priv->initial_animation_done = TRUE;
+ }
+
+@@ -3343,6 +3351,9 @@ panel_toplevel_calculate_animation_end_geometry (PanelToplevel *toplevel)
+ GdkScreen *screen;
+ int monitor_width, monitor_height;
+
++ if (toplevel->priv->animating)
++ return;
++
+ toplevel->priv->animation_end_x = toplevel->priv->x;
+ toplevel->priv->animation_end_y = toplevel->priv->y;
+ toplevel->priv->animation_end_width = -1;
+@@ -3395,13 +3406,12 @@ panel_toplevel_start_animation (PanelToplevel *toplevel)
+
+ toplevel->priv->animating = TRUE;
+
+- panel_toplevel_update_struts (toplevel, TRUE);
+ panel_struts_update_toplevel_geometry (toplevel,
+ &toplevel->priv->animation_end_x,
+ &toplevel->priv->animation_end_y,
+ &toplevel->priv->animation_end_width,
+ &toplevel->priv->animation_end_height);
+- panel_toplevel_update_struts (toplevel, FALSE);
++ panel_toplevel_update_struts (toplevel);
+
+ gdk_window_get_origin (GTK_WIDGET (toplevel)->window, &cur_x, &cur_y);
+
+@@ -3571,16 +3581,18 @@ panel_toplevel_auto_unhide_timeout_handler (PanelToplevel *toplevel)
+ if (toplevel->priv->animating)
+ return TRUE;
+
+- if (!toplevel->priv->animate)
++ if (!toplevel->priv->animate) {
++ toplevel->priv->initial_animation_started = TRUE;
+ toplevel->priv->initial_animation_done = TRUE;
++ }
+
+ /* initial animation for auto-hidden panels: we need to unhide and hide
+ * again to get at the right size */
+- if (!toplevel->priv->initial_animation_done &&
++ if (!toplevel->priv->initial_animation_started &&
+ toplevel->priv->auto_hide) {
+ toplevel->priv->unhide_timeout = 0;
+ panel_toplevel_unhide (toplevel);
+- toplevel->priv->initial_animation_done = TRUE;
++ toplevel->priv->initial_animation_started = TRUE;
+ panel_toplevel_hide (toplevel, TRUE, -1);
+ return FALSE;
+ }
+@@ -3656,7 +3668,7 @@ panel_toplevel_queue_auto_unhide (PanelToplevel *toplevel)
+ void
+ panel_toplevel_queue_initial_unhide (PanelToplevel *toplevel)
+ {
+- if (toplevel->priv->initial_animation_done)
++ if (toplevel->priv->initial_animation_started)
+ return;
+ /* Give the applets a second or so to frob after registering */
+ toplevel->priv->unhide_timeout =
+@@ -4505,8 +4517,9 @@ panel_toplevel_init (PanelToplevel *toplevel)
+ toplevel->priv->position_centered = FALSE;
+ toplevel->priv->attached = FALSE;
+ toplevel->priv->attach_hidden = FALSE;
+- toplevel->priv->updated_geometry_initial = FALSE;
+- toplevel->priv->initial_animation_done = FALSE;
++ toplevel->priv->updated_geometry_initial = FALSE;
++ toplevel->priv->initial_animation_started = FALSE;
++ toplevel->priv->initial_animation_done = FALSE;
+
+ gtk_widget_add_events (GTK_WIDGET (toplevel),
+ GDK_BUTTON_PRESS_MASK |
+@@ -4809,7 +4822,7 @@ panel_toplevel_set_auto_hide_size (PanelToplevel *toplevel,
+ toplevel->priv->auto_hide_size = auto_hide_size;
+
+ if (toplevel->priv->state == PANEL_STATE_AUTO_HIDDEN) {
+- if (panel_toplevel_update_struts (toplevel, FALSE)) {
++ if (panel_toplevel_update_struts (toplevel)) {
+ if (toplevel->priv->animate) {
+ panel_toplevel_unhide (toplevel);
+ panel_toplevel_hide (toplevel, TRUE, -1);
+@@ -4985,7 +4998,7 @@ panel_toplevel_set_auto_hide (PanelToplevel *toplevel,
+ else
+ panel_toplevel_queue_auto_unhide (toplevel);
+
+- if (panel_toplevel_update_struts (toplevel, FALSE))
++ if (panel_toplevel_update_struts (toplevel))
+ gtk_widget_queue_resize (GTK_WIDGET (toplevel));
+
+ g_object_notify (G_OBJECT (toplevel), "auto-hide");
+
+commit c78ee2be16ffe3a2f158bc880be246f06623d60c
+Author: Ray Strode <rstrode@redhat.com>
+Date: Mon Nov 3 17:12:04 2008 -0500
+
+ Set up struts initially when realizing window
+
+diff --git a/gnome-panel/panel-toplevel.c b/gnome-panel/panel-toplevel.c
+index bef6a02..96f564c 100644
+--- a/gnome-panel/panel-toplevel.c
++++ b/gnome-panel/panel-toplevel.c
+@@ -2939,6 +2939,7 @@ panel_toplevel_realize (GtkWidget *widget)
+
+ panel_toplevel_initially_hide (toplevel);
+
++ panel_toplevel_update_struts (toplevel);
+ panel_toplevel_move_resize_window (toplevel, TRUE, TRUE);
+ }
+
+
+commit 9d711261374f2fc55664c1707f5cf283c594be8a
+Author: Ray Strode <rstrode@redhat.com>
+Date: Mon Nov 3 17:13:32 2008 -0500
+
+ Set up initial animation to correct position
+
+ The initial animation for autohidden panels, is
+ the auto hide size, not the normal size. So,
+ detect that case and only slide to the autohide size.
+
+diff --git a/gnome-panel/panel-toplevel.c b/gnome-panel/panel-toplevel.c
+index 96f564c..0a71ba0 100644
+--- a/gnome-panel/panel-toplevel.c
++++ b/gnome-panel/panel-toplevel.c
+@@ -3412,7 +3412,30 @@ panel_toplevel_start_animation (PanelToplevel *toplevel)
+ &toplevel->priv->animation_end_y,
+ &toplevel->priv->animation_end_width,
+ &toplevel->priv->animation_end_height);
+- panel_toplevel_update_struts (toplevel);
++
++ /* If we're in the initial animation and we're autohidden, we only want
++ * to animate to the autohidden height
++ */
++ if (toplevel->priv->initial_animation_started && !toplevel->priv->initial_animation_done && toplevel->priv->state == PANEL_STATE_AUTO_HIDDEN) {
++ switch (toplevel->priv->orientation) {
++ case PANEL_ORIENTATION_TOP:
++ toplevel->priv->animation_end_y -= toplevel->priv->geometry.height;
++ toplevel->priv->animation_end_y += panel_toplevel_get_effective_auto_hide_size (toplevel);
++ break;
++ case PANEL_ORIENTATION_BOTTOM:
++ toplevel->priv->animation_end_y += toplevel->priv->geometry.height;
++ toplevel->priv->animation_end_y -= panel_toplevel_get_effective_auto_hide_size (toplevel);
++ break;
++ case PANEL_ORIENTATION_LEFT:
++ toplevel->priv->animation_end_x -= toplevel->priv->geometry.width;
++ toplevel->priv->animation_end_x += panel_toplevel_get_effective_auto_hide_size (toplevel);
++ break;
++ case PANEL_ORIENTATION_RIGHT:
++ toplevel->priv->animation_end_x += toplevel->priv->geometry.width;
++ toplevel->priv->animation_end_x -= panel_toplevel_get_effective_auto_hide_size (toplevel);
++ break;
++ }
++ }
+
+ gdk_window_get_origin (GTK_WIDGET (toplevel)->window, &cur_x, &cur_y);
+
+diff -up gnome-panel-2.24.1/gnome-panel/panel-applet-frame.c.fix-it gnome-panel-2.24.1/gnome-panel/panel-applet-frame.c
+--- gnome-panel-2.24.1/gnome-panel/panel-applet-frame.c.fix-it 2008-11-03 18:02:07.000000000 -0500
++++ gnome-panel-2.24.1/gnome-panel/panel-applet-frame.c 2008-11-03 18:02:10.000000000 -0500
+@@ -1286,6 +1286,7 @@ panel_applet_frame_activated (CORBA_Obje
+ if (!in_default_panel_config (frame_act->id)) {
+ panel_applet_frame_loading_failed (frame, frame_act->id);
+ }
++ panel_applet_stop_loading (frame_act->id);
+ g_free (frame_act->id);
+ g_free (frame_act);
+ return;
diff --git a/gnome-panel.spec b/gnome-panel.spec
index 7d61d69..6e0ebe5 100644
--- a/gnome-panel.spec
+++ b/gnome-panel.spec
@@ -23,7 +23,7 @@
Summary: GNOME panel
Name: gnome-panel
Version: 2.24.1
-Release: 1%{?dist}
+Release: 2%{?dist}
URL: http://www.gnome.org
Source0: http://download.gnome.org/sources/gnome-panel/2.24/%{name}-%{version}.tar.bz2
@@ -114,7 +114,7 @@ Patch11: applet-error.patch
Patch24: gnome-panel-2.21.92-allow-spurious-view-done-signals.patch
# http://bugzilla.gnome.org/show_bug.cgi?id=554343
-Patch25: gnome-panel-2.24.0-smoother-slide-in.patch
+Patch25: gnome-panel-2.24.1-smoother-slide-in.patch
# http://bugzilla.gnome.org/show_bug.cgi?id=536915
Patch26: gnome-panel-2.24.0-hide-shutdown-if-unavailable.patch
@@ -371,6 +371,11 @@ fi
%{_datadir}/gtk-doc/html/*
%changelog
+* Mon Nov 3 2008 Ray Strode <rstrode@redhat.com> - 2.24.1-2
+- Fix up panel slide in patch to
+ 1) not have odd effects with vertical panels
+ 2) set up struts earlier
+
* Wed Oct 22 2008 Matthias Clasen <mclasen@redhat.com> - 2.24.1-1
- Update to 2.24.1