From 8ca97cfd78528281b0b632e2cb01e30aa1a15034 Mon Sep 17 00:00:00 2001 From: Ray Strode Date: Oct 12 2008 15:42:13 +0000 Subject: - Update smooth slide patch to be simpler based on feedback on gnome bug (554343) --- diff --git a/gnome-panel-2.24.0-smoother-slide-in.patch b/gnome-panel-2.24.0-smoother-slide-in.patch index b0fb4d8..2a4101a 100644 --- a/gnome-panel-2.24.0-smoother-slide-in.patch +++ b/gnome-panel-2.24.0-smoother-slide-in.patch @@ -1,5 +1,6 @@ ---- gnome-panel-2.24.0/gnome-panel/applet.c -+++ gnome-panel-2.24.0/gnome-panel/applet.c +diff -up gnome-panel-2.24.0/gnome-panel/applet.c.smoother-slide-in gnome-panel-2.24.0/gnome-panel/applet.c +--- gnome-panel-2.24.0/gnome-panel/applet.c.smoother-slide-in 2008-09-22 17:21:05.000000000 -0400 ++++ gnome-panel-2.24.0/gnome-panel/applet.c 2008-10-12 11:22:38.000000000 -0400 @@ -792,6 +792,7 @@ typedef struct { } PanelAppletToLoad; @@ -8,19 +9,16 @@ static gboolean panel_applet_have_load_idle = FALSE; static void -@@ -818,8 +819,40 @@ panel_applet_on_load_queue (const char *id) +@@ -818,6 +819,44 @@ panel_applet_on_load_queue (const char * return FALSE; } -+static void -+on_applet_loaded (const char *id, -+ gpointer user_data) ++void ++panel_applet_stop_loading (const char *id) +{ + PanelAppletToLoad *applet; + GSList *l, *applet_link; + -+ GClosure *closure = (GClosure *) user_data; -+ + applet_link = NULL; + for (l = panel_applets_loading; l; l = l->next) { + applet = l->data; @@ -36,21 +34,27 @@ + panel_applets_loading = g_slist_delete_link (panel_applets_loading, l); + free_applet_to_load (applet); + -+ if (panel_applets_loading == NULL && closure != NULL) { -+ GValue param = { 0 }; -+ g_value_init (¶m, G_TYPE_POINTER); -+ g_value_set_instance (¶m, NULL); -+ g_cclosure_marshal_VOID__VOID (closure, NULL, 1, ¶m, 0, NULL); ++ if (panel_applets_loading == NULL) { ++ GSList *toplevels, *l; ++ ++ toplevels = panel_toplevel_list_toplevels (); ++ ++ l = toplevels; ++ while (l != NULL) { ++ PanelToplevel *toplevel; ++ ++ toplevel = (PanelToplevel *) l->data; ++ ++ panel_toplevel_queue_initial_unhide (toplevel); ++ l = l->next; ++ } + } +} + static gboolean --panel_applet_load_idle_handler (gpointer dummy) -+panel_applet_load_idle_handler (GClosure *closure) + panel_applet_load_idle_handler (gpointer dummy) { - PanelAppletToLoad *applet = NULL; - PanelToplevel *toplevel = NULL; -@@ -848,8 +881,8 @@ panel_applet_load_idle_handler (gpointer dummy) +@@ -848,8 +887,8 @@ panel_applet_load_idle_handler (gpointer panel_applet_have_load_idle = FALSE; return FALSE; } @@ -60,67 +64,57 @@ panel_widget = panel_toplevel_get_panel_widget (toplevel); -@@ -866,13 +900,16 @@ panel_applet_load_idle_handler (gpointer dummy) - panel_widget, - applet->locked, - applet->position, -- applet->id); -+ applet->id, -+ on_applet_loaded, -+ closure); - break; - case PANEL_OBJECT_DRAWER: - drawer_load_from_gconf (panel_widget, +@@ -873,6 +912,7 @@ panel_applet_load_idle_handler (gpointer applet->locked, applet->position, applet->id); -+ on_applet_loaded (applet->id, closure); ++ panel_applet_stop_loading (applet->id); break; case PANEL_OBJECT_MENU: panel_menu_button_load_from_gconf (panel_widget, -@@ -880,12 +917,14 @@ panel_applet_load_idle_handler (gpointer dummy) +@@ -880,12 +920,14 @@ panel_applet_load_idle_handler (gpointer applet->position, TRUE, applet->id); -+ on_applet_loaded (applet->id, closure); ++ panel_applet_stop_loading (applet->id); break; case PANEL_OBJECT_LAUNCHER: launcher_load_from_gconf (panel_widget, applet->locked, applet->position, applet->id); -+ on_applet_loaded (applet->id, closure); ++ panel_applet_stop_loading (applet->id); break; case PANEL_OBJECT_LOGOUT: case PANEL_OBJECT_LOCK: -@@ -896,6 +935,7 @@ panel_applet_load_idle_handler (gpointer dummy) +@@ -896,6 +938,7 @@ panel_applet_load_idle_handler (gpointer applet->position, TRUE, applet->id); -+ on_applet_loaded (applet->id, closure); ++ panel_applet_stop_loading (applet->id); break; case PANEL_OBJECT_ACTION: panel_action_button_load_from_gconf ( -@@ -904,6 +944,7 @@ panel_applet_load_idle_handler (gpointer dummy) +@@ -904,6 +947,7 @@ panel_applet_load_idle_handler (gpointer applet->position, TRUE, applet->id); -+ on_applet_loaded (applet->id, closure); ++ panel_applet_stop_loading (applet->id); break; case PANEL_OBJECT_MENU_BAR: panel_menu_bar_load_from_gconf ( -@@ -912,18 +953,18 @@ panel_applet_load_idle_handler (gpointer dummy) +@@ -912,18 +956,18 @@ panel_applet_load_idle_handler (gpointer applet->position, TRUE, applet->id); -+ on_applet_loaded (applet->id, closure); ++ panel_applet_stop_loading (applet->id); break; case PANEL_OBJECT_SEPARATOR: panel_separator_load_from_gconf (panel_widget, applet->locked, applet->position, applet->id); -+ on_applet_loaded (applet->id, closure); ++ panel_applet_stop_loading (applet->id); default: break; } @@ -130,280 +124,98 @@ return TRUE; } -@@ -969,8 +1010,11 @@ panel_applet_compare (const PanelAppletToLoad *a, - } - - void --panel_applet_load_queued_applets (void) -+panel_applet_load_queued_applets (GFunc queue_empty_func, -+ gpointer user_data) - { -+ GClosure *closure; -+ - if (!panel_applets_to_load) - return; - -@@ -978,7 +1022,11 @@ panel_applet_load_queued_applets (void) - (GCompareFunc) panel_applet_compare); - - if ( ! panel_applet_have_load_idle) { -- g_idle_add (panel_applet_load_idle_handler, NULL); -+ if (queue_empty_func != NULL) -+ closure = g_cclosure_new_swap (G_CALLBACK (queue_empty_func), user_data, NULL); -+ else -+ closure = NULL; -+ g_idle_add ((GSourceFunc) panel_applet_load_idle_handler, closure); - panel_applet_have_load_idle = TRUE; - } - } ---- gnome-panel-2.24.0/gnome-panel/applet.h -+++ gnome-panel-2.24.0/gnome-panel/applet.h -@@ -28,6 +28,7 @@ typedef struct { - char *id; - } AppletInfo; - -+typedef void (* AppletLoadingDoneFunc) (const char *id, gpointer data); - typedef gboolean (* CallbackEnabledFunc) (void); - - typedef struct { -@@ -69,7 +70,8 @@ void panel_applet_queue_applet_to_load (const char *id, - int position, - gboolean right_stick, - gboolean locked); --void panel_applet_load_queued_applets (void); -+void panel_applet_load_queued_applets (GFunc queue_empty_func, -+ gpointer user_data); - gboolean panel_applet_on_load_queue (const char *id); - - ---- gnome-panel-2.24.0/gnome-panel/panel-applet-frame.c -+++ gnome-panel-2.24.0/gnome-panel/panel-applet-frame.c -@@ -80,6 +80,8 @@ typedef struct { - int position; - gboolean exactpos; - char *id; -+ AppletLoadingDoneFunc done_func; -+ gpointer user_data; - } PanelAppletFrameActivating; - - /* Keep in sync with panel-applet.h. Uggh. -@@ -326,7 +328,9 @@ panel_applet_frame_load (const gchar *iid, - gboolean locked, - int position, - gboolean exactpos, -- const char *id) -+ const char *id, -+ AppletLoadingDoneFunc done_func, -+ gpointer user_data) - { - PanelAppletFrame *frame; - CORBA_Environment ev; -@@ -337,11 +341,17 @@ panel_applet_frame_load (const gchar *iid, - g_return_if_fail (id != NULL); - - if (g_slist_find_custom (no_reload_applets, id, -- (GCompareFunc) strcmp)) -+ (GCompareFunc) strcmp)) { -+ if (done_func) -+ done_func (id, user_data); - return; -+ } - -- if (panel_lockdown_is_applet_disabled (iid)) -+ if (panel_lockdown_is_applet_disabled (iid)) { -+ if (done_func) -+ done_func (id, user_data); - return; -+ } - - frame = g_object_new (PANEL_TYPE_APPLET_FRAME, NULL); - frame->priv->panel = panel; -@@ -353,6 +363,8 @@ panel_applet_frame_load (const gchar *iid, - frame_act->position = position; - frame_act->exactpos = exactpos; - frame_act->id = g_strdup (id); -+ frame_act->done_func = done_func; -+ frame_act->user_data = user_data; - - CORBA_exception_init (&ev); - -@@ -367,7 +379,9 @@ void - panel_applet_frame_load_from_gconf (PanelWidget *panel_widget, - gboolean locked, - int position, -- const char *id) -+ const char *id, -+ AppletLoadingDoneFunc done_func, -+ gpointer user_data) - { - const char *key; - char *applet_iid; -@@ -379,11 +393,14 @@ panel_applet_frame_load_from_gconf (PanelWidget *panel_widget, - applet_iid = gconf_client_get_string (panel_gconf_get_client (), - key, NULL); - -- if (!applet_iid || !applet_iid[0]) -+ if (!applet_iid || !applet_iid[0]) { -+ done_func (id, user_data); - return; -+ } - - panel_applet_frame_load (applet_iid, panel_widget, -- locked, position, TRUE, id); -+ locked, position, TRUE, id, -+ done_func, user_data); - - g_free (applet_iid); - } -@@ -890,7 +907,7 @@ panel_applet_frame_reload_response (GtkWidget *dialog, - } - - panel_applet_frame_load (iid, panel, locked, -- position, TRUE, id); -+ position, TRUE, id, NULL, NULL); - - g_free (iid); - g_free (id); -@@ -1286,6 +1303,8 @@ panel_applet_frame_activated (CORBA_Object object, +diff -up gnome-panel-2.24.0/gnome-panel/applet.h.smoother-slide-in gnome-panel-2.24.0/gnome-panel/applet.h +--- gnome-panel-2.24.0/gnome-panel/applet.h.smoother-slide-in 2008-09-22 17:21:05.000000000 -0400 ++++ gnome-panel-2.24.0/gnome-panel/applet.h 2008-10-12 11:11:42.000000000 -0400 +@@ -53,6 +53,7 @@ AppletInfo *panel_applet_register (Gt + gboolean exactpos, + PanelObjectType type, + const char *id); ++void panel_applet_stop_loading (const char *id); + + const char *panel_applet_get_id (AppletInfo *info); + const char *panel_applet_get_id_by_widget (GtkWidget *widget); +diff -up gnome-panel-2.24.0/gnome-panel/panel-applet-frame.c.smoother-slide-in gnome-panel-2.24.0/gnome-panel/panel-applet-frame.c +--- gnome-panel-2.24.0/gnome-panel/panel-applet-frame.c.smoother-slide-in 2008-10-11 12:42:50.000000000 -0400 ++++ gnome-panel-2.24.0/gnome-panel/panel-applet-frame.c 2008-10-12 11:19:58.000000000 -0400 +@@ -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); } -+ if (frame_act->done_func) -+ frame_act->done_func (frame_act->id, frame_act->user_data); ++ panel_applet_stop_loading (frame_act->id); g_free (frame_act->id); g_free (frame_act); return; -@@ -1328,6 +1347,8 @@ panel_applet_frame_activated (CORBA_Object object, +@@ -1328,6 +1329,7 @@ panel_applet_frame_activated (CORBA_Obje panel_applet_frame_loading_failed (frame, frame_act->id); CORBA_exception_free (&corba_ev); bonobo_object_release_unref (object, NULL); -+ if (frame_act->done_func) -+ frame_act->done_func (frame_act->id, frame_act->user_data); ++ panel_applet_stop_loading (frame_act->id); g_free (frame_act->id); g_free (frame_act); g_free (error); -@@ -1344,6 +1365,8 @@ panel_applet_frame_activated (CORBA_Object object, +@@ -1344,6 +1346,7 @@ panel_applet_frame_activated (CORBA_Obje g_warning (G_STRLOC ": failed to load applet %s", frame->priv->iid); panel_applet_frame_loading_failed (frame, frame_act->id); -+ if (frame_act->done_func) -+ frame_act->done_func (frame_act->id, frame_act->user_data); ++ panel_applet_stop_loading (frame_act->id); g_free (frame_act->id); g_free (frame_act); return; -@@ -1355,6 +1378,8 @@ panel_applet_frame_activated (CORBA_Object object, +@@ -1355,6 +1358,7 @@ panel_applet_frame_activated (CORBA_Obje "(cannot get control frame)", frame->priv->iid); panel_applet_frame_loading_failed (frame, frame_act->id); gtk_object_sink (GTK_OBJECT (widget)); -+ if (frame_act->done_func) -+ frame_act->done_func (frame_act->id, frame_act->user_data); ++ panel_applet_stop_loading (frame_act->id); g_free (frame_act->id); g_free (frame_act); return; -@@ -1371,6 +1396,8 @@ panel_applet_frame_activated (CORBA_Object object, +@@ -1371,6 +1375,7 @@ panel_applet_frame_activated (CORBA_Obje frame->priv->iid, error); panel_applet_frame_loading_failed (frame, frame_act->id); gtk_object_sink (GTK_OBJECT (widget)); -+ if (frame_act->done_func) -+ frame_act->done_func (frame_act->id, frame_act->user_data); ++ panel_applet_stop_loading (frame_act->id); g_free (frame_act->id); g_free (frame_act); g_free (error); -@@ -1394,6 +1421,8 @@ panel_applet_frame_activated (CORBA_Object object, +@@ -1394,6 +1399,7 @@ panel_applet_frame_activated (CORBA_Obje frame->priv->iid, error); panel_applet_frame_loading_failed (frame, frame_act->id); gtk_object_sink (GTK_OBJECT (widget)); -+ if (frame_act->done_func) -+ frame_act->done_func (frame_act->id, frame_act->user_data); ++ panel_applet_stop_loading (frame_act->id); g_free (frame_act->id); g_free (frame_act); g_free (error); -@@ -1418,6 +1447,8 @@ panel_applet_frame_activated (CORBA_Object object, +@@ -1418,6 +1424,7 @@ panel_applet_frame_activated (CORBA_Obje "(cannot get control)", frame->priv->iid); panel_applet_frame_loading_failed (frame, frame_act->id); gtk_object_sink (GTK_OBJECT (widget)); -+ if (frame_act->done_func) -+ frame_act->done_func (frame_act->id, frame_act->user_data); ++ panel_applet_stop_loading (frame_act->id); g_free (frame_act->id); g_free (frame_act); return; -@@ -1430,6 +1461,8 @@ panel_applet_frame_activated (CORBA_Object object, +@@ -1430,6 +1437,7 @@ panel_applet_frame_activated (CORBA_Obje "(cannot get applet shell)", frame->priv->iid); panel_applet_frame_loading_failed (frame, frame_act->id); gtk_object_sink (GTK_OBJECT (widget)); -+ if (frame_act->done_func) -+ frame_act->done_func (frame_act->id, frame_act->user_data); ++ panel_applet_stop_loading (frame_act->id); g_free (frame_act->id); g_free (frame_act); return; -@@ -1461,6 +1494,8 @@ panel_applet_frame_activated (CORBA_Object object, +@@ -1461,6 +1469,7 @@ panel_applet_frame_activated (CORBA_Obje panel_lockdown_notify_add (G_CALLBACK (panel_applet_frame_sync_menu_state), frame); -+ if (frame_act->done_func) -+ frame_act->done_func (frame_act->id, frame_act->user_data); ++ panel_applet_stop_loading (frame_act->id); g_free (frame_act->id); g_free (frame_act); } ---- gnome-panel-2.24.0/gnome-panel/panel-applet-frame.h -+++ gnome-panel-2.24.0/gnome-panel/panel-applet-frame.h -@@ -73,7 +73,9 @@ void panel_applet_frame_change_background (PanelAppletFrame *frame, - void panel_applet_frame_load_from_gconf (PanelWidget *panel_widget, - gboolean locked, - int position, -- const char *id); -+ const char *id, -+ AppletLoadingDoneFunc done_func, -+ gpointer user_data); - - void panel_applet_frame_set_panel (PanelAppletFrame *frame, - PanelWidget *panel); ---- gnome-panel-2.24.0/gnome-panel/panel-profile.c -+++ gnome-panel-2.24.0/gnome-panel/panel-profile.c -@@ -2195,7 +2195,7 @@ panel_profile_object_id_list_notify (GConfClient *client, - g_slist_free (sublist); - g_slist_free (object_ids); - -- panel_applet_load_queued_applets (); -+ panel_applet_load_queued_applets (NULL, NULL); - } - - static void -@@ -2446,6 +2446,22 @@ panel_profile_ensure_toplevel_per_screen (GConfClient *client, - g_slist_free (empty_screens); - } - -+static void -+panel_profile_on_loaded (void) -+{ -+ GSList *toplevels; -+ GSList *l; -+ -+ toplevels = panel_toplevel_list_toplevels (); -+ -+ for (l = toplevels; l; l = l->next) { -+ PanelToplevel *toplevel; -+ -+ toplevel = PANEL_TOPLEVEL (l->data); -+ panel_toplevel_queue_initial_unhide (toplevel); -+ } -+} -+ - void - panel_profile_load (void) - { -@@ -2477,7 +2493,7 @@ panel_profile_load (void) - - panel_profile_ensure_toplevel_per_screen (client, PANEL_CONFIG_DIR); - -- panel_applet_load_queued_applets (); -+ panel_applet_load_queued_applets ((GFunc) panel_profile_on_loaded, NULL); - } - - static gboolean ---- gnome-panel-2.24.0/gnome-panel/panel-toplevel.c -+++ gnome-panel-2.24.0/gnome-panel/panel-toplevel.c -@@ -2898,12 +2899,15 @@ static void +diff -up gnome-panel-2.24.0/gnome-panel/panel-applet-frame.h.smoother-slide-in gnome-panel-2.24.0/gnome-panel/panel-applet-frame.h +diff -up gnome-panel-2.24.0/gnome-panel/panel-profile.c.smoother-slide-in gnome-panel-2.24.0/gnome-panel/panel-profile.c +diff -up gnome-panel-2.24.0/gnome-panel/panel-toplevel.c.smoother-slide-in gnome-panel-2.24.0/gnome-panel/panel-toplevel.c +--- gnome-panel-2.24.0/gnome-panel/panel-toplevel.c.smoother-slide-in 2008-09-22 17:21:05.000000000 -0400 ++++ gnome-panel-2.24.0/gnome-panel/panel-toplevel.c 2008-10-11 12:42:50.000000000 -0400 +@@ -2898,12 +2898,15 @@ static void panel_toplevel_initially_hide (PanelToplevel *toplevel) { if (!toplevel->priv->attached) { @@ -421,7 +233,7 @@ } else toplevel->priv->initial_animation_done = TRUE; -@@ -3638,6 +3642,17 @@ panel_toplevel_queue_auto_unhide (PanelToplevel *toplevel) +@@ -3638,6 +3641,17 @@ panel_toplevel_queue_auto_unhide (PanelT toplevel); } @@ -439,9 +251,10 @@ 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 -@@ -136,6 +136,7 @@ void panel_toplevel_hide (PanelToplevel +diff -up gnome-panel-2.24.0/gnome-panel/panel-toplevel.h.smoother-slide-in gnome-panel-2.24.0/gnome-panel/panel-toplevel.h +--- gnome-panel-2.24.0/gnome-panel/panel-toplevel.h.smoother-slide-in 2008-09-22 17:21:05.000000000 -0400 ++++ gnome-panel-2.24.0/gnome-panel/panel-toplevel.h 2008-10-11 12:42:50.000000000 -0400 +@@ -136,6 +136,7 @@ void panel_toplevel_hide void panel_toplevel_unhide (PanelToplevel *toplevel); void panel_toplevel_queue_auto_hide (PanelToplevel *toplevel); void panel_toplevel_queue_auto_unhide (PanelToplevel *toplevel); diff --git a/gnome-panel.spec b/gnome-panel.spec index ccbcad3..4277003 100644 --- a/gnome-panel.spec +++ b/gnome-panel.spec @@ -23,7 +23,7 @@ Summary: GNOME panel Name: gnome-panel Version: 2.24.0 -Release: 6%{?dist} +Release: 7%{?dist} URL: http://www.gnome.org Source0: http://download.gnome.org/sources/gnome-panel/2.24/%{name}-%{version}.tar.bz2 @@ -371,6 +371,10 @@ fi %{_datadir}/gtk-doc/html/* %changelog +* Sun Oct 12 2008 Ray Strode - 2.24.0-7 +- Update smooth slide patch to be simpler based on feedback + on gnome bug (554343) + * Thu Oct 9 2008 Ray Strode - 2.24.0-6 - Hide shutdown item if unavailable