Index: nautilus-2.29.92.1/src/file-manager/fm-desktop-icon-view.c =================================================================== --- nautilus-2.29.92.1.orig/src/file-manager/fm-desktop-icon-view.c 2010-03-10 14:59:13.000000000 +0100 +++ nautilus-2.29.92.1/src/file-manager/fm-desktop-icon-view.c 2010-03-10 21:55:04.000000000 +0100 @@ -42,6 +42,8 @@ #include #include #include +#include +#include #include #include #include @@ -523,6 +525,41 @@ } static void +end_loading (FMDesktopIconView *desktop_icon_view, gboolean all_files_seen) +{ + DBusGConnection *connection; + DBusGProxy *proxy; + GError *error = NULL; + + connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error); + + if (error) { + g_warning ("%s", error->message); + g_error_free(error); + return; + } + + /* Get the current session object */ + proxy = dbus_g_proxy_new_for_name (connection, + "com.ubuntu.BootCurtain", + "/com/ubuntu/BootCurtain", + "com.ubuntu.BootCurtain"); + + if (!proxy) { + g_warning ("Unable to connect to BootCurtain"); + dbus_g_connection_unref (connection); + return; + } + + dbus_g_proxy_call_no_reply (proxy, + "SignalLoaded", + G_TYPE_STRING, "nautilus", + G_TYPE_INVALID); + + g_object_unref (proxy); +} + +static void fm_desktop_icon_view_init (FMDesktopIconView *desktop_icon_view) { NautilusIconContainer *icon_container; @@ -600,6 +637,8 @@ default_zoom_level_changed (desktop_icon_view); fm_desktop_icon_view_update_icon_container_fonts (desktop_icon_view); + g_signal_connect (desktop_icon_view, "end_loading", G_CALLBACK (end_loading), NULL); + eel_preferences_add_callback (NAUTILUS_PREFERENCES_LOCKDOWN_COMMAND_LINE, lockdown_disable_command_line_changed_callback, desktop_icon_view); Index: nautilus-2.29.92.1/src/nautilus-main.c =================================================================== --- nautilus-2.29.92.1.orig/src/nautilus-main.c 2010-03-10 14:59:13.000000000 +0100 +++ nautilus-2.29.92.1/src/nautilus-main.c 2010-03-10 21:55:04.000000000 +0100 @@ -315,6 +315,41 @@ setup_debug_log_glog (); } +static void +setup_boot_curtain (void) +{ + DBusGConnection *connection; + DBusGProxy *proxy; + GError *error = NULL; + + connection = dbus_g_bus_get (DBUS_BUS_SYSTEM, &error); + + if (error) { + g_warning ("%s", error->message); + g_error_free(error); + return; + } + + /* Get the current session object */ + proxy = dbus_g_proxy_new_for_name (connection, + "com.ubuntu.BootCurtain", + "/com/ubuntu/BootCurtain", + "com.ubuntu.BootCurtain"); + + if (!proxy) { + g_warning ("Unable to connect to BootCurtain"); + dbus_g_connection_unref (connection); + return; + } + + dbus_g_proxy_call_no_reply (proxy, + "AddWaitSignal", + G_TYPE_STRING, "nautilus", + G_TYPE_INVALID); + + g_object_unref (proxy); +} + int main (int argc, char *argv[]) { @@ -429,7 +464,7 @@ g_print ("GNOME nautilus " PACKAGE_VERSION "\n"); return 0; } - + #ifdef HAVE_EXEMPI xmp_init(); #endif @@ -473,6 +508,10 @@ */ nautilus_global_preferences_init (); + if (eel_preferences_get_boolean (NAUTILUS_PREFERENCES_SHOW_DESKTOP)) { + setup_boot_curtain (); + } + /* exit_with_last_window being FALSE, nautilus can run without window. */ exit_with_last_window = eel_preferences_get_boolean (NAUTILUS_PREFERENCES_EXIT_WITH_LAST_WINDOW);