diff --git a/gdm-2.24.0-add-panel-slide.patch b/gdm-2.24.0-add-panel-slide.patch new file mode 100644 index 0000000..50dd4dc --- /dev/null +++ b/gdm-2.24.0-add-panel-slide.patch @@ -0,0 +1,127 @@ +diff -up gdm-2.24.0/gui/simple-greeter/gdm-greeter-panel.c.add-panel-slide gdm-2.24.0/gui/simple-greeter/gdm-greeter-panel.c +--- gdm-2.24.0/gui/simple-greeter/gdm-greeter-panel.c.add-panel-slide 2008-08-21 00:31:47.000000000 -0400 ++++ gdm-2.24.0/gui/simple-greeter/gdm-greeter-panel.c 2008-09-30 23:02:34.000000000 -0400 +@@ -20,6 +20,7 @@ + + #include "config.h" + ++#include + #include + #include + #include +@@ -40,6 +41,7 @@ + #include "gdm-language-option-widget.h" + #include "gdm-layout-option-widget.h" + #include "gdm-session-option-widget.h" ++#include "gdm-timer.h" + #include "gdm-profile.h" + + #include "na-tray.h" +@@ -59,6 +61,9 @@ struct GdmGreeterPanelPrivate + GtkWidget *layout_option_widget; + GtkWidget *session_option_widget; + ++ GdmTimer *animation_timer; ++ double progress; ++ + char *default_session_name; + char *default_language_name; + }; +@@ -349,7 +354,7 @@ update_geometry (GdmGreeterPanel *panel, + panel->priv->geometry.height = requisition->height + 2 * GTK_CONTAINER (panel)->border_width; + + panel->priv->geometry.x = geometry.x; +- panel->priv->geometry.y = geometry.y + geometry.height - panel->priv->geometry.height; ++ panel->priv->geometry.y = geometry.y + geometry.height - panel->priv->geometry.height + (1.0 - panel->priv->progress) * panel->priv->geometry.height; + + #if 0 + g_debug ("Setting geometry x:%d y:%d w:%d h:%d", +@@ -402,6 +407,39 @@ gdm_greeter_panel_real_size_request (Gtk + + gdm_greeter_panel_move_resize_window (panel, position_changed, size_changed); + } ++static void ++gdm_greeter_panel_real_show (GtkWidget *widget) ++{ ++ GdmGreeterPanel *panel; ++ GtkSettings *settings; ++ gboolean animations_are_enabled; ++ ++ settings = gtk_settings_get_for_screen (gtk_widget_get_screen (widget)); ++ g_object_get (settings, "gtk-enable-animations", &animations_are_enabled, NULL); ++ ++ panel = GDM_GREETER_PANEL (widget); ++ ++ if (animations_are_enabled) { ++ gdm_timer_start (panel->priv->animation_timer, 1.0); ++ } else { ++ panel->priv->progress = 1.0; ++ } ++ ++ GTK_WIDGET_CLASS (gdm_greeter_panel_parent_class)->show (widget); ++} ++ ++static void ++gdm_greeter_panel_real_hide (GtkWidget *widget) ++{ ++ GdmGreeterPanel *panel; ++ ++ panel = GDM_GREETER_PANEL (widget); ++ ++ gdm_timer_stop (panel->priv->animation_timer); ++ panel->priv->progress = 0.0; ++ ++ GTK_WIDGET_CLASS (gdm_greeter_panel_parent_class)->hide (widget); ++} + + static void + gdm_greeter_panel_class_init (GdmGreeterPanelClass *klass) +@@ -418,6 +456,9 @@ gdm_greeter_panel_class_init (GdmGreeter + widget_class->realize = gdm_greeter_panel_real_realize; + widget_class->unrealize = gdm_greeter_panel_real_unrealize; + widget_class->size_request = gdm_greeter_panel_real_size_request; ++ widget_class->show = gdm_greeter_panel_real_show; ++ widget_class->hide = gdm_greeter_panel_real_hide; ++ + signals[LANGUAGE_SELECTED] = + g_signal_new ("language-selected", + G_TYPE_FROM_CLASS (object_class), +@@ -521,6 +562,15 @@ on_session_activated (GdmSessionOptionWi + } + + static void ++on_animation_tick (GdmGreeterPanel *panel, ++ double progress) ++{ ++ panel->priv->progress = progress * log ((G_E - 1.0) * progress + 1.0); ++ ++ gtk_widget_queue_resize (GTK_WIDGET (panel)); ++} ++ ++static void + gdm_greeter_panel_init (GdmGreeterPanel *panel) + { + NaTray *tray; +@@ -605,6 +655,13 @@ gdm_greeter_panel_init (GdmGreeterPanel + + gdm_greeter_panel_hide_user_options (panel); + ++ panel->priv->progress = 0.0; ++ panel->priv->animation_timer = gdm_timer_new (); ++ g_signal_connect_swapped (panel->priv->animation_timer, ++ "tick", ++ G_CALLBACK (on_animation_tick), ++ panel); ++ + gdm_profile_end (NULL); + } + +@@ -620,6 +677,8 @@ gdm_greeter_panel_finalize (GObject *obj + + g_return_if_fail (greeter_panel->priv != NULL); + ++ g_signal_handlers_disconnect_by_func (object, on_animation_tick, greeter_panel); ++ + G_OBJECT_CLASS (gdm_greeter_panel_parent_class)->finalize (object); + } + diff --git a/gdm.spec b/gdm.spec index 6f33b0e..3cae2d1 100644 --- a/gdm.spec +++ b/gdm.spec @@ -16,7 +16,7 @@ Summary: The GNOME Display Manager Name: gdm Version: 2.24.0 -Release: 6%{?dist} +Release: 7%{?dist} Epoch: 1 License: GPLv2+ Group: User Interface/X @@ -93,6 +93,7 @@ Patch8: gdm-2.23.92-another-locale-fixup.patch Patch9: gdm-2.23.92-fix-crash.patch # Fix pulled from upstream Patch10: gdm-2.24.0-fix-icon-scale.patch +Patch11: gdm-2.24.0-add-panel-slide.patch # Fedora-specific Patch99: gdm-2.23.1-fedora-logo.patch @@ -124,6 +125,7 @@ multiple simulanteous logged in users. %patch8 -p1 -b .another-locale-fixup %patch9 -p1 -b .fix-crash %patch10 -p1 -b .fix-icon-scale +%patch11 -p1 -b .add-panel-slide %patch99 -p1 -b .fedora-logo @@ -326,6 +328,9 @@ fi %{_datadir}/gnome-2.0/ui/GNOME_FastUserSwitchApplet.xml %changelog +* Tue Sep 30 2008 Ray Strode - 1:2.24.0-7 +- Make panel slide in initially like the gnome panel + * Tue Sep 30 2008 Ray Strode - 1:2.24.0-6 - drop background priority change. Choppyiness in -3 ended up being a bug in gnome-settings-daemon.