rpms/gnome-panel/devel gnome-panel-2.24.0-smoother-slide-in.patch, NONE, 1.1 gnome-panel.spec, 1.320, 1.321
Ray Strode
rstrode at fedoraproject.org
Fri Sep 26 19:39:44 UTC 2008
- Previous message (by thread): rpms/kdelibs/devel .cvsignore, 1.58, 1.59 kdelibs.spec, 1.380, 1.381 sources, 1.70, 1.71 kdelibs-4.1.0-#455130.patch, 1.1, NONE kdelibs-4.1.1-kde#157789.patch, 1.2, NONE kdelibs-4.1.1-kde#169447-khtml-regression.patch, 1.1, NONE kdelibs-4.1.1-kde#856379-cookiejar.patch, 1.1, NONE kdelibs-4.1.1-kde#856403-urlnav.patch, 1.1, NONE kdelibs-4.1.1-kde#858795-mimeassoc.patch, 1.1, NONE kdelibs-4.1.1-kde#860005-emoticons.patch, 1.1, NONE kdelibs-4.1.1-kde#860095-khtml-scroll-crash.patch, 1.1, NONE kdelibs-4.1.1-kdelibs-4.1.1-kde#170461-khtml-regression.patch, 1.1, NONE kdelibs-4.1.1-kutils-fixes.patch, 1.1, NONE
- Next message (by thread): rpms/kdepimlibs/devel .cvsignore, 1.26, 1.27 kdepimlibs.spec, 1.49, 1.50 sources, 1.26, 1.27 fix-invitations.diff, 1.1, NONE
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Author: rstrode
Update of /cvs/pkgs/rpms/gnome-panel/devel
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv19576
Modified Files:
gnome-panel.spec
Added Files:
gnome-panel-2.24.0-smoother-slide-in.patch
Log Message:
- Try to make initial panel slide-in animation be smooth
gnome-panel-2.24.0-smoother-slide-in.patch:
--- NEW FILE gnome-panel-2.24.0-smoother-slide-in.patch ---
--- gnome-panel-2.24.0/gnome-panel/applet.c
+++ gnome-panel-2.24.0/gnome-panel/applet.c
@@ -792,6 +792,7 @@ typedef struct {
} PanelAppletToLoad;
static GSList *panel_applets_to_load = NULL;
+static GSList *panel_applets_loading = NULL;
static gboolean panel_applet_have_load_idle = FALSE;
static void
@@ -818,8 +819,40 @@ panel_applet_on_load_queue (const char *id)
return FALSE;
}
+static void
+on_applet_loaded (const char *id,
+ gpointer user_data)
+{
+ 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;
+
+ if (strcmp (applet->id, id) == 0) {
+ break;
+ }
+ }
+
+ if (l == NULL)
+ return;
+
+ 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);
+ }
+}
+
static gboolean
-panel_applet_load_idle_handler (gpointer dummy)
+panel_applet_load_idle_handler (GClosure *closure)
{
PanelAppletToLoad *applet = NULL;
PanelToplevel *toplevel = NULL;
@@ -848,8 +881,8 @@ panel_applet_load_idle_handler (gpointer dummy)
panel_applet_have_load_idle = FALSE;
return FALSE;
}
-
panel_applets_to_load = g_slist_delete_link (panel_applets_to_load, l);
+ panel_applets_loading = g_slist_append (panel_applets_loading, applet);
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,
applet->locked,
applet->position,
applet->id);
+ on_applet_loaded (applet->id, closure);
break;
case PANEL_OBJECT_MENU:
panel_menu_button_load_from_gconf (panel_widget,
@@ -880,12 +917,14 @@ panel_applet_load_idle_handler (gpointer dummy)
applet->position,
TRUE,
applet->id);
+ on_applet_loaded (applet->id, closure);
break;
case PANEL_OBJECT_LAUNCHER:
launcher_load_from_gconf (panel_widget,
applet->locked,
applet->position,
applet->id);
+ on_applet_loaded (applet->id, closure);
break;
case PANEL_OBJECT_LOGOUT:
case PANEL_OBJECT_LOCK:
@@ -896,6 +935,7 @@ panel_applet_load_idle_handler (gpointer dummy)
applet->position,
TRUE,
applet->id);
+ on_applet_loaded (applet->id, closure);
break;
case PANEL_OBJECT_ACTION:
panel_action_button_load_from_gconf (
@@ -904,6 +944,7 @@ panel_applet_load_idle_handler (gpointer dummy)
applet->position,
TRUE,
applet->id);
+ on_applet_loaded (applet->id, closure);
break;
case PANEL_OBJECT_MENU_BAR:
panel_menu_bar_load_from_gconf (
@@ -912,18 +953,18 @@ panel_applet_load_idle_handler (gpointer dummy)
applet->position,
TRUE,
applet->id);
+ on_applet_loaded (applet->id, closure);
break;
case PANEL_OBJECT_SEPARATOR:
panel_separator_load_from_gconf (panel_widget,
applet->locked,
applet->position,
applet->id);
+ on_applet_loaded (applet->id, closure);
default:
break;
}
- free_applet_to_load (applet);
-
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,
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);
g_free (frame_act->id);
g_free (frame_act);
return;
@@ -1328,6 +1347,8 @@ 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);
+ if (frame_act->done_func)
+ frame_act->done_func (frame_act->id, frame_act->user_data);
g_free (frame_act->id);
g_free (frame_act);
g_free (error);
@@ -1344,6 +1365,8 @@ 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);
+ if (frame_act->done_func)
+ frame_act->done_func (frame_act->id, frame_act->user_data);
g_free (frame_act->id);
g_free (frame_act);
return;
@@ -1355,6 +1378,8 @@ 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));
+ if (frame_act->done_func)
+ frame_act->done_func (frame_act->id, frame_act->user_data);
g_free (frame_act->id);
g_free (frame_act);
return;
@@ -1371,6 +1396,8 @@ 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));
+ if (frame_act->done_func)
+ frame_act->done_func (frame_act->id, frame_act->user_data);
g_free (frame_act->id);
g_free (frame_act);
g_free (error);
@@ -1394,6 +1421,8 @@ 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));
+ if (frame_act->done_func)
+ frame_act->done_func (frame_act->id, frame_act->user_data);
g_free (frame_act->id);
g_free (frame_act);
g_free (error);
@@ -1418,6 +1447,8 @@ 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));
+ if (frame_act->done_func)
+ frame_act->done_func (frame_act->id, frame_act->user_data);
g_free (frame_act->id);
g_free (frame_act);
return;
@@ -1430,6 +1461,8 @@ 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));
+ if (frame_act->done_func)
+ frame_act->done_func (frame_act->id, frame_act->user_data);
g_free (frame_act->id);
g_free (frame_act);
return;
@@ -1461,6 +1494,8 @@ panel_applet_frame_activated (CORBA_Object object,
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);
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
panel_toplevel_initially_hide (PanelToplevel *toplevel)
{
if (!toplevel->priv->attached) {
+
+ /* We start the panel off hidden until all the
+ * applets are loaded, and then finally slide it
+ * down when it's ready to be used
+ */
toplevel->priv->initial_animation_done = FALSE;
toplevel->priv->state = PANEL_STATE_AUTO_HIDDEN;
gtk_widget_queue_resize (GTK_WIDGET (toplevel));
-
- panel_toplevel_queue_auto_unhide (toplevel);
} else
toplevel->priv->initial_animation_done = TRUE;
@@ -3638,6 +3642,17 @@ panel_toplevel_queue_auto_unhide (PanelToplevel *toplevel)
toplevel);
}
+void
+panel_toplevel_queue_initial_unhide (PanelToplevel *toplevel)
+{
+ if (toplevel->priv->initial_animation_done)
+ return;
+ /* Give the applets a second or so to frob after registering */
+ toplevel->priv->unhide_timeout =
+ g_timeout_add_seconds (1, (GSourceFunc) panel_toplevel_auto_unhide_timeout_handler,
+ toplevel);
+}
+
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
void panel_toplevel_unhide (PanelToplevel *toplevel);
void panel_toplevel_queue_auto_hide (PanelToplevel *toplevel);
void panel_toplevel_queue_auto_unhide (PanelToplevel *toplevel);
+void panel_toplevel_queue_initial_unhide (PanelToplevel *toplevel);
void panel_toplevel_push_autohide_disabler (PanelToplevel *toplevel);
void panel_toplevel_pop_autohide_disabler (PanelToplevel *toplevel);
Index: gnome-panel.spec
===================================================================
RCS file: /cvs/pkgs/rpms/gnome-panel/devel/gnome-panel.spec,v
retrieving revision 1.320
retrieving revision 1.321
diff -u -r1.320 -r1.321
--- gnome-panel.spec 25 Sep 2008 19:22:03 -0000 1.320
+++ gnome-panel.spec 26 Sep 2008 19:39:13 -0000 1.321
@@ -23,7 +23,7 @@
Summary: GNOME panel
Name: gnome-panel
Version: 2.24.0
-Release: 3%{?dist}
+Release: 4%{?dist}
URL: http://www.gnome.org
Source0: http://download.gnome.org/sources/gnome-panel/2.24/%{name}-%{version}.tar.bz2
@@ -113,6 +113,8 @@
# http://bugzilla.gnome.org/show_bug.cgi?id=520111
Patch24: gnome-panel-2.21.92-allow-spurious-view-done-signals.patch
+Patch25: gnome-panel-2.24.0-smoother-slide-in.patch
+
Patch35: clock-wakeups.patch
Conflicts: gnome-power-manager < 2.15.3
@@ -160,6 +162,7 @@
%patch10 -p1 -b .preferred-apps
%patch11 -p1 -b .applet-error
%patch24 -p1 -b .allow-spurious-view-done-signals
+%patch25 -p1 -b .smoother-slide-in
%patch35 -p1 -b .clock-wakeups
. %{SOURCE6}
@@ -360,6 +363,9 @@
%{_datadir}/gtk-doc/html/*
%changelog
+* Fri Sep 26 2008 Ray Strode <rstrode at redhat.com> - 2.24.0-4
+- Try to make initial panel slide-in animation be smooth
+
* Thu Sep 25 2008 Matthias Clasen <mclasen at redhat.com> - 2.24.0-3
- Save some space
- Previous message (by thread): rpms/kdelibs/devel .cvsignore, 1.58, 1.59 kdelibs.spec, 1.380, 1.381 sources, 1.70, 1.71 kdelibs-4.1.0-#455130.patch, 1.1, NONE kdelibs-4.1.1-kde#157789.patch, 1.2, NONE kdelibs-4.1.1-kde#169447-khtml-regression.patch, 1.1, NONE kdelibs-4.1.1-kde#856379-cookiejar.patch, 1.1, NONE kdelibs-4.1.1-kde#856403-urlnav.patch, 1.1, NONE kdelibs-4.1.1-kde#858795-mimeassoc.patch, 1.1, NONE kdelibs-4.1.1-kde#860005-emoticons.patch, 1.1, NONE kdelibs-4.1.1-kde#860095-khtml-scroll-crash.patch, 1.1, NONE kdelibs-4.1.1-kdelibs-4.1.1-kde#170461-khtml-regression.patch, 1.1, NONE kdelibs-4.1.1-kutils-fixes.patch, 1.1, NONE
- Next message (by thread): rpms/kdepimlibs/devel .cvsignore, 1.26, 1.27 kdepimlibs.spec, 1.49, 1.50 sources, 1.26, 1.27 fix-invitations.diff, 1.1, NONE
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the fedora-extras-commits
mailing list