[nautilus/wip/gbsneto/cleanups] view: manage the floating bar



commit b0fe85ec73d8954817053fd81c1d771960a0854a
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Tue Jul 28 19:21:31 2015 -0300

    view: manage the floating bar
    
    The NautilusView class is the abstract class from which
    the different views (list & grid) inherit, in order to
    display directory content.
    
    Up to now, it was NautilusWindowSlot who was managing
    the floating bar, requiring access to the underlying
    model of NautilusView and making the code even more
    code coupling and complexity to the codebase.
    
    Fix that by delegating the management of the floating
    bar to NautilusView itself.

 src/nautilus-view.c        |  248 ++++++++++++++++++++++++++++++++++++++-
 src/nautilus-window-slot.c |  275 +-------------------------------------------
 src/nautilus-window-slot.h |    3 -
 3 files changed, 247 insertions(+), 279 deletions(-)
---
diff --git a/src/nautilus-view.c b/src/nautilus-view.c
index cf20d42..62fa615 100644
--- a/src/nautilus-view.c
+++ b/src/nautilus-view.c
@@ -32,6 +32,7 @@
 #include "nautilus-application.h"
 #include "nautilus-desktop-canvas-view.h"
 #include "nautilus-error-reporting.h"
+#include "nautilus-floating-bar.h"
 #include "nautilus-list-view.h"
 #include "nautilus-mime-actions.h"
 #include "nautilus-previewer.h"
@@ -231,6 +232,11 @@ struct NautilusViewDetails
         GtkWidget *overlay;
         GtkWidget *folder_is_empty_widget;
         GtkWidget *no_search_results_widget;
+
+        /* Floating bar */
+        guint floating_bar_set_status_timeout_id;
+       guint floating_bar_loading_timeout_id;
+       GtkWidget *floating_bar;
 };
 
 typedef struct {
@@ -305,6 +311,210 @@ check_empty_states (NautilusView *view)
         }
 }
 
+/*
+ * Floating Bar code
+ */
+static void
+remove_loading_floating_bar (NautilusView *view)
+{
+       if (view->details->floating_bar_loading_timeout_id != 0) {
+               g_source_remove (view->details->floating_bar_loading_timeout_id);
+               view->details->floating_bar_loading_timeout_id = 0;
+       }
+
+       gtk_widget_hide (view->details->floating_bar);
+       nautilus_floating_bar_cleanup_actions (NAUTILUS_FLOATING_BAR (view->details->floating_bar));
+}
+
+static void
+real_setup_loading_floating_bar (NautilusView *view)
+{
+       gboolean disable_chrome;
+
+       g_object_get (nautilus_view_get_window (view),
+                     "disable-chrome", &disable_chrome,
+                     NULL);
+
+       if (disable_chrome) {
+               gtk_widget_hide (view->details->floating_bar);
+               return;
+       }
+
+       nautilus_floating_bar_cleanup_actions (NAUTILUS_FLOATING_BAR (view->details->floating_bar));
+       nautilus_floating_bar_set_primary_label (NAUTILUS_FLOATING_BAR (view->details->floating_bar),
+                                                NAUTILUS_IS_SEARCH_DIRECTORY (view->details->model) ? 
_("Searching…") : _("Loading…"));
+       nautilus_floating_bar_set_details_label (NAUTILUS_FLOATING_BAR (view->details->floating_bar), NULL);
+       nautilus_floating_bar_set_show_spinner (NAUTILUS_FLOATING_BAR (view->details->floating_bar), 
view->details->loading);
+       nautilus_floating_bar_add_action (NAUTILUS_FLOATING_BAR (view->details->floating_bar),
+                                         "process-stop-symbolic",
+                                         NAUTILUS_FLOATING_BAR_ACTION_ID_STOP);
+
+       gtk_widget_set_halign (view->details->floating_bar, GTK_ALIGN_END);
+       gtk_widget_show (view->details->floating_bar);
+}
+
+static gboolean
+setup_loading_floating_bar_timeout_cb (gpointer user_data)
+{
+       NautilusView *view = user_data;
+
+       view->details->floating_bar_loading_timeout_id = 0;
+       real_setup_loading_floating_bar (view);
+
+       return FALSE;
+}
+
+static void
+setup_loading_floating_bar (NautilusView *view)
+{
+       /* setup loading overlay */
+       if (view->details->floating_bar_set_status_timeout_id != 0) {
+               g_source_remove (view->details->floating_bar_set_status_timeout_id);
+               view->details->floating_bar_set_status_timeout_id = 0;
+       }
+
+       if (view->details->floating_bar_loading_timeout_id != 0) {
+               g_source_remove (view->details->floating_bar_loading_timeout_id);
+               view->details->floating_bar_loading_timeout_id = 0;
+       }
+
+       view->details->floating_bar_loading_timeout_id =
+               g_timeout_add (500, setup_loading_floating_bar_timeout_cb, view);
+}
+
+static void
+floating_bar_action_cb (NautilusFloatingBar *floating_bar,
+                        gint                 action,
+                        NautilusView        *view)
+{
+        if (action == NAUTILUS_FLOATING_BAR_ACTION_ID_STOP) {
+                remove_loading_floating_bar (view);
+                nautilus_window_slot_stop_loading (view->details->slot);
+        }
+}
+
+static void
+real_view_set_short_status (NautilusView *view,
+                            const gchar  *primary_status,
+                            const gchar  *detail_status)
+{
+        gboolean disable_chrome;
+
+        nautilus_floating_bar_cleanup_actions (NAUTILUS_FLOATING_BAR (view->details->floating_bar));
+        nautilus_floating_bar_set_show_spinner (NAUTILUS_FLOATING_BAR (view->details->floating_bar), 
view->details->loading);
+
+        g_object_get (nautilus_view_get_window (view),
+                      "disable-chrome", &disable_chrome,
+                      NULL);
+
+        if ((primary_status == NULL && detail_status == NULL) || disable_chrome) {
+                gtk_widget_hide (view->details->floating_bar);
+                return;
+        }
+
+        nautilus_floating_bar_set_labels (NAUTILUS_FLOATING_BAR (view->details->floating_bar),
+                                          primary_status,
+                                          detail_status);
+
+        gtk_widget_show (view->details->floating_bar);
+}
+
+typedef struct {
+       gchar *primary_status;
+       gchar *detail_status;
+       NautilusView *view;
+} SetStatusData;
+
+static void
+set_status_data_free (gpointer data)
+{
+       SetStatusData *status_data = data;
+
+       g_free (status_data->primary_status);
+       g_free (status_data->detail_status);
+
+       g_slice_free (SetStatusData, data);
+}
+
+static gboolean
+set_status_timeout_cb (gpointer data)
+{
+       SetStatusData *status_data = data;
+
+       status_data->view->details->floating_bar_set_status_timeout_id = 0;
+       real_view_set_short_status (status_data->view,
+                                   status_data->primary_status,
+                                   status_data->detail_status);
+
+       return FALSE;
+}
+
+static void
+set_floating_bar_status (NautilusView *view,
+                         const gchar  *primary_status,
+                         const gchar  *detail_status)
+{
+       GtkSettings *settings;
+       gint double_click_time;
+       SetStatusData *status_data;
+
+       if (view->details->floating_bar_set_status_timeout_id != 0) {
+               g_source_remove (view->details->floating_bar_set_status_timeout_id);
+               view->details->floating_bar_set_status_timeout_id = 0;
+       }
+
+       settings = gtk_settings_get_for_screen (gtk_widget_get_screen (GTK_WIDGET (view)));
+       g_object_get (settings,
+                     "gtk-double-click-time", &double_click_time,
+                     NULL);
+
+       status_data = g_slice_new0 (SetStatusData);
+       status_data->primary_status = g_strdup (primary_status);
+       status_data->detail_status = g_strdup (detail_status);
+       status_data->view = view;
+
+       /* waiting for half of the double-click-time before setting
+        * the status seems to be a good approximation of not setting it
+        * too often and not delaying the statusbar too much.
+        */
+       view->details->floating_bar_set_status_timeout_id =
+               g_timeout_add_full (G_PRIORITY_DEFAULT,
+                                   (guint) (double_click_time / 2),
+                                   set_status_timeout_cb,
+                                   status_data,
+                                   set_status_data_free);
+}
+
+static void
+on_done_loading (NautilusView *view)
+{
+        remove_loading_floating_bar (view);
+}
+
+
+static void
+connect_directory_signals (NautilusView      *view,
+                           NautilusDirectory *directory)
+{
+        if (NAUTILUS_IS_SEARCH_DIRECTORY (directory)) {
+                g_signal_connect_swapped (directory,
+                                          "done-loading",
+                                          G_CALLBACK (on_done_loading),
+                                          view);
+        }
+}
+
+static void
+disconnect_directory_signals (NautilusView      *view,
+                              NautilusDirectory *directory)
+{
+        if (NAUTILUS_IS_SEARCH_DIRECTORY (directory)) {
+                g_signal_handlers_disconnect_by_func (directory,
+                                                      G_CALLBACK (on_done_loading),
+                                                      view);
+        }
+}
+
 static char *
 real_get_backing_uri (NautilusView *view)
 {
@@ -2649,6 +2859,16 @@ nautilus_view_finalize (GObject *object)
                gdk_event_free ((GdkEvent *) view->details->pathbar_popup_event);
        }
 
+        if (view->details->floating_bar_set_status_timeout_id != 0) {
+                g_source_remove (view->details->floating_bar_set_status_timeout_id);
+                view->details->floating_bar_set_status_timeout_id = 0;
+        }
+
+        if (view->details->floating_bar_loading_timeout_id != 0) {
+                g_source_remove (view->details->floating_bar_loading_timeout_id);
+                view->details->floating_bar_loading_timeout_id = 0;
+        }
+
        g_hash_table_destroy (view->details->non_ready_files);
 
        G_OBJECT_CLASS (nautilus_view_parent_class)->finalize (object);
@@ -2823,8 +3043,7 @@ nautilus_view_display_selection_info (NautilusView *view)
        g_free (non_folder_count_str);
        g_free (non_folder_item_count_str);
 
-       nautilus_window_slot_set_status (view->details->slot,
-                                        primary_status, detail_status);
+        set_floating_bar_status (view, primary_status, detail_status);
 
        g_free (primary_status);
        g_free (detail_status);
@@ -2841,12 +3060,10 @@ nautilus_view_load_location (NautilusView *nautilus_view,
                             GFile        *location)
 {
        NautilusDirectory *directory;
-       NautilusView *directory_view;
 
-       directory_view = NAUTILUS_VIEW (nautilus_view);
        nautilus_profile_start (NULL);
        directory = nautilus_directory_get (location);
-       load_directory (directory_view, directory);
+       load_directory (nautilus_view, directory);
        nautilus_directory_unref (directory);
        nautilus_profile_end (NULL);
 }
@@ -2881,6 +3098,7 @@ done_loading (NautilusView *view,
          * as NULL. */
        if (view->details->model != NULL) {
                nautilus_view_update_toolbar_menus (view);
+                remove_loading_floating_bar (view);
                schedule_update_context_menus (view);
                schedule_update_status (view);
                reset_update_interval (view);
@@ -6916,6 +7134,8 @@ load_directory (NautilusView *view,
 
        view->details->loading = TRUE;
 
+        connect_directory_signals (view, directory);
+
        /* Update menus when directory is empty, before going to new
         * location, so they won't have any false lingering knowledge
         * of old selection.
@@ -6929,6 +7149,11 @@ load_directory (NautilusView *view,
 
        old_directory = view->details->model;
 
+        /* Disconnect search signals from the old directory if it was a search directory */
+        if (old_directory) {
+                disconnect_directory_signals (view, old_directory);
+        }
+
        nautilus_directory_ref (directory);
        view->details->model = directory;
        nautilus_directory_unref (old_directory);
@@ -6989,6 +7214,7 @@ finish_loading (NautilusView *view)
        g_signal_emit (view, signals[BEGIN_LOADING], 0);
        nautilus_profile_end ("BEGIN_LOADING");
 
+        setup_loading_floating_bar (view);
         check_empty_states (view);
 
        /* Assume we have now all information to show window */
@@ -7167,6 +7393,7 @@ nautilus_view_stop_loading (NautilusView *view)
 
        disconnect_model_handlers (view);
        if (view->details->model) {
+                disconnect_directory_signals (view, view->details->model);
                nautilus_directory_unref (view->details->model);
                view->details->model = NULL;
        }
@@ -7700,6 +7927,17 @@ nautilus_view_init (NautilusView *view)
                                 view->details->folder_is_empty_widget);
         g_object_unref (builder);
 
+        /* Floating bar */
+        view->details->floating_bar = nautilus_floating_bar_new (NULL, NULL, FALSE);
+        gtk_widget_set_halign (view->details->floating_bar, GTK_ALIGN_END);
+        gtk_widget_set_valign (view->details->floating_bar, GTK_ALIGN_END);
+        gtk_overlay_add_overlay (GTK_OVERLAY (view->details->overlay), view->details->floating_bar);
+
+        g_signal_connect (view->details->floating_bar,
+                          "action",
+                          G_CALLBACK (floating_bar_action_cb),
+                          view);
+
        /* Default to true; desktop-icon-view sets to false */
        view->details->show_foreign_files = TRUE;
 
diff --git a/src/nautilus-window-slot.c b/src/nautilus-window-slot.c
index 43f9884..77a644d 100644
--- a/src/nautilus-window-slot.c
+++ b/src/nautilus-window-slot.c
@@ -27,7 +27,6 @@
 #include "nautilus-application.h"
 #include "nautilus-canvas-view.h"
 #include "nautilus-desktop-window.h"
-#include "nautilus-floating-bar.h"
 #include "nautilus-list-view.h"
 #include "nautilus-special-location-bar.h"
 #include "nautilus-trash-bar.h"
@@ -62,12 +61,6 @@ enum {
 struct NautilusWindowSlotDetails {
        NautilusWindow *window;
 
-       /* floating bar */
-       guint set_status_timeout_id;
-       guint loading_timeout_id;
-       GtkWidget *floating_bar;
-       GtkWidget *view_overlay;
-
        /* slot contains
         *  1) an vbox containing extra_location_widgets
         *  2) the view
@@ -131,7 +124,6 @@ static void location_has_really_changed (NautilusWindowSlot *slot);
 static void nautilus_window_slot_connect_new_content_view (NautilusWindowSlot *slot);
 static void nautilus_window_slot_disconnect_content_view (NautilusWindowSlot *slot);
 static void nautilus_window_slot_emit_location_change (NautilusWindowSlot *slot, GFile *from, GFile *to);
-static void setup_loading_floating_bar (NautilusWindowSlot *slot);
 
 static void
 nautilus_window_slot_sync_search_widgets (NautilusWindowSlot *slot)
@@ -190,49 +182,6 @@ nautilus_window_slot_sync_view_mode (NautilusWindowSlot *slot)
 }
 
 static void
-remove_loading_floating_bar (NautilusWindowSlot *slot)
-{
-       if (slot->details->loading_timeout_id != 0) {
-               g_source_remove (slot->details->loading_timeout_id);
-               slot->details->loading_timeout_id = 0;
-       }
-
-       gtk_widget_hide (slot->details->floating_bar);
-       nautilus_floating_bar_cleanup_actions (NAUTILUS_FLOATING_BAR (slot->details->floating_bar));
-}
-
-static void
-nautilus_window_slot_on_done_loading (NautilusDirectory  *directory,
-                                      NautilusWindowSlot *slot)
-{
-
-        remove_loading_floating_bar (slot);
-        nautilus_window_slot_set_allow_stop (slot, FALSE);
-}
-
-static void
-connect_directory_signals (NautilusWindowSlot *slot,
-                           NautilusDirectory  *directory)
-{
-        if (NAUTILUS_IS_SEARCH_DIRECTORY (directory)) {
-                g_signal_connect_object (directory, "done-loading",
-                                         G_CALLBACK (nautilus_window_slot_on_done_loading),
-                                         slot, 0);
-        }
-}
-
-static void
-disconnect_directory_signals (NautilusWindowSlot *slot,
-                              NautilusDirectory  *directory)
-{
-        if (NAUTILUS_IS_SEARCH_DIRECTORY (directory)) {
-                g_signal_handlers_disconnect_by_func (directory,
-                                                      G_CALLBACK (nautilus_window_slot_on_done_loading),
-                                                      slot);
-        }
-}
-
-static void
 sync_search_directory (NautilusWindowSlot *slot)
 {
        NautilusDirectory *directory;
@@ -526,16 +475,6 @@ real_inactive (NautilusWindowSlot *slot)
 }
 
 static void
-floating_bar_action_cb (NautilusFloatingBar *floating_bar,
-                       gint action,
-                       NautilusWindowSlot *slot)
-{
-       if (action == NAUTILUS_FLOATING_BAR_ACTION_ID_STOP) {
-               nautilus_window_slot_stop_loading (slot);
-       }
-}
-
-static void
 remove_all_extra_location_widgets (GtkWidget *widget,
                                   gpointer data)
 {
@@ -627,22 +566,6 @@ nautilus_window_slot_constructed (GObject *object)
        gtk_widget_show_all (slot->details->query_editor_revealer);
        nautilus_window_slot_add_extra_location_widget (slot, slot->details->query_editor_revealer);
 
-       slot->details->view_overlay = gtk_overlay_new ();
-       gtk_widget_add_events (slot->details->view_overlay,
-                              GDK_ENTER_NOTIFY_MASK |
-                              GDK_LEAVE_NOTIFY_MASK);
-       gtk_box_pack_start (GTK_BOX (slot), slot->details->view_overlay, TRUE, TRUE, 0);
-       gtk_widget_show (slot->details->view_overlay);
-
-       slot->details->floating_bar = nautilus_floating_bar_new (NULL, NULL, FALSE);
-       gtk_widget_set_halign (slot->details->floating_bar, GTK_ALIGN_END);
-       gtk_widget_set_valign (slot->details->floating_bar, GTK_ALIGN_END);
-       gtk_overlay_add_overlay (GTK_OVERLAY (slot->details->view_overlay),
-                                slot->details->floating_bar);
-
-       g_signal_connect (slot->details->floating_bar, "action",
-                         G_CALLBACK (floating_bar_action_cb), slot);
-
        slot->details->title = g_strdup (_("Loading…"));
 }
 
@@ -889,7 +812,6 @@ begin_location_change (NautilusWindowSlot *slot,
                       NautilusWindowGoToCallback callback,
                       gpointer user_data)
 {
-       NautilusDirectory *previous_directory;
         NautilusDirectory *directory;
         NautilusFile *file;
        gboolean force_reload;
@@ -905,12 +827,8 @@ begin_location_change (NautilusWindowSlot *slot,
 
        nautilus_profile_start (NULL);
 
-       previous_directory = nautilus_directory_get (previous_location);
         directory = nautilus_directory_get (location);
 
-       /* Disconnect search signals from the old directory if it was a search directory */
-        disconnect_directory_signals (slot, previous_directory);
-       nautilus_directory_unref (previous_directory);
 
         /* Avoid to update status from the current view in our async calls */
         nautilus_window_slot_disconnect_content_view (slot);
@@ -945,7 +863,6 @@ begin_location_change (NautilusWindowSlot *slot,
        end_location_change (slot);
 
        nautilus_window_slot_set_allow_stop (slot, TRUE);
-       nautilus_window_slot_set_status (slot, NULL, NULL);
 
        g_assert (slot->details->pending_location == NULL);
        g_assert (slot->details->pending_selection == NULL);
@@ -1466,10 +1383,6 @@ create_content_view (NautilusWindowSlot *slot,
        old_directory = nautilus_directory_get (old_location);
        new_directory = nautilus_directory_get (slot->details->pending_location);
 
-        /* Connect to the done loading signal if it is a search directory to update
-         * the no results widget */
-        connect_directory_signals (slot, new_directory);
-
        if (NAUTILUS_IS_SEARCH_DIRECTORY (new_directory) &&
            !NAUTILUS_IS_SEARCH_DIRECTORY (old_directory)) {
                nautilus_search_directory_set_base_model (NAUTILUS_SEARCH_DIRECTORY (new_directory), 
old_directory);
@@ -1629,7 +1542,6 @@ cancel_location_change (NautilusWindowSlot *slot)
        location = nautilus_window_slot_get_location (slot);
 
        directory = nautilus_directory_get (slot->details->location);
-        disconnect_directory_signals (slot, directory);
         /* Stops current loading or search if any, so we are not slow */
        nautilus_view_stop_loading (slot->details->content_view);
         nautilus_directory_unref (directory);
@@ -2240,70 +2152,11 @@ view_end_loading_cb (NautilusView       *view,
         /* If it is a search directory, it will hide the toolbar when the search engine
          * finishes, not every time the view end loading the new files */
         if (!NAUTILUS_IS_SEARCH_DIRECTORY (nautilus_view_get_model (slot->details->content_view))) {
-                remove_loading_floating_bar (slot);
                 nautilus_window_slot_set_allow_stop (slot, FALSE);
         }
 }
 
 static void
-real_setup_loading_floating_bar (NautilusWindowSlot *slot)
-{
-       gboolean disable_chrome;
-
-       g_object_get (nautilus_window_slot_get_window (slot),
-                     "disable-chrome", &disable_chrome,
-                     NULL);
-
-       if (disable_chrome) {
-               gtk_widget_hide (slot->details->floating_bar);
-               return;
-       }
-
-       nautilus_floating_bar_cleanup_actions (NAUTILUS_FLOATING_BAR (slot->details->floating_bar));
-       nautilus_floating_bar_set_primary_label (NAUTILUS_FLOATING_BAR (slot->details->floating_bar),
-                                                NAUTILUS_IS_SEARCH_DIRECTORY (nautilus_view_get_model 
(slot->details->content_view)) ?
-                                                _("Searching…") : _("Loading…"));
-       nautilus_floating_bar_set_details_label (NAUTILUS_FLOATING_BAR (slot->details->floating_bar), NULL);
-       nautilus_floating_bar_set_show_spinner (NAUTILUS_FLOATING_BAR (slot->details->floating_bar),
-                                               slot->details->allow_stop);
-       nautilus_floating_bar_add_action (NAUTILUS_FLOATING_BAR (slot->details->floating_bar),
-                                         "process-stop-symbolic",
-                                         NAUTILUS_FLOATING_BAR_ACTION_ID_STOP);
-
-       gtk_widget_set_halign (slot->details->floating_bar, GTK_ALIGN_END);
-       gtk_widget_show (slot->details->floating_bar);
-}
-
-static gboolean
-setup_loading_floating_bar_timeout_cb (gpointer user_data)
-{
-       NautilusWindowSlot *slot = user_data;
-
-       slot->details->loading_timeout_id = 0;
-       real_setup_loading_floating_bar (slot);
-
-       return FALSE;
-}
-
-static void
-setup_loading_floating_bar (NautilusWindowSlot *slot)
-{
-       /* setup loading overlay */
-       if (slot->details->set_status_timeout_id != 0) {
-               g_source_remove (slot->details->set_status_timeout_id);
-               slot->details->set_status_timeout_id = 0;
-       }
-
-       if (slot->details->loading_timeout_id != 0) {
-               g_source_remove (slot->details->loading_timeout_id);
-               slot->details->loading_timeout_id = 0;
-       }
-
-       slot->details->loading_timeout_id =
-               g_timeout_add (500, setup_loading_floating_bar_timeout_cb, slot);
-}
-
-static void
 view_begin_loading_cb (NautilusView       *view,
                       NautilusWindowSlot *slot)
 {
@@ -2315,9 +2168,7 @@ view_begin_loading_cb (NautilusView       *view,
                nautilus_window_slot_set_allow_stop (slot, TRUE);
        }
 
-        setup_loading_floating_bar (slot);
-
-       nautilus_profile_end (NULL);
+        nautilus_profile_end (NULL);
 }
 
 static void
@@ -2422,7 +2273,8 @@ nautilus_window_slot_switch_new_content_view (NautilusWindowSlot *slot)
                slot->details->new_content_view = NULL;
 
                widget = GTK_WIDGET (slot->details->content_view);
-               gtk_container_add (GTK_CONTAINER (slot->details->view_overlay), widget);
+               gtk_container_add (GTK_CONTAINER (slot), widget);
+                gtk_widget_set_vexpand (widget, TRUE);
                gtk_widget_show (widget);
        }
 }
@@ -2476,7 +2328,6 @@ static void
 nautilus_window_slot_dispose (GObject *object)
 {
        NautilusWindowSlot *slot;
-       NautilusDirectory *directory;
        GtkWidget *widget;
 
        slot = NAUTILUS_WINDOW_SLOT (object);
@@ -2500,16 +2351,6 @@ nautilus_window_slot_dispose (GObject *object)
                slot->details->new_content_view = NULL;
        }
 
-       if (slot->details->set_status_timeout_id != 0) {
-               g_source_remove (slot->details->set_status_timeout_id);
-               slot->details->set_status_timeout_id = 0;
-       }
-
-       if (slot->details->loading_timeout_id != 0) {
-               g_source_remove (slot->details->loading_timeout_id);
-               slot->details->loading_timeout_id = 0;
-       }
-
        nautilus_window_slot_set_viewed_file (slot, NULL);
        /* TODO? why do we unref here? the file is NULL.
         * It was already here before the slot move, though */
@@ -2519,10 +2360,6 @@ nautilus_window_slot_dispose (GObject *object)
                /* TODO? why do we ref here, instead of unreffing?
                 * It was already here before the slot migration, though */
                g_object_ref (slot->details->location);
-
-               directory = nautilus_directory_get (slot->details->location);
-                disconnect_directory_signals (slot, directory);
-                g_object_unref (directory);
        }
 
         if (slot->details->view_mode_before_search) {
@@ -2715,113 +2552,9 @@ nautilus_window_slot_set_allow_stop (NautilusWindowSlot *slot,
 void
 nautilus_window_slot_stop_loading (NautilusWindowSlot *slot)
 {
-        remove_loading_floating_bar (slot);
         cancel_location_change (slot);
 }
 
-static void
-real_slot_set_short_status (NautilusWindowSlot *slot,
-                           const gchar *primary_status,
-                           const gchar *detail_status)
-{
-       gboolean disable_chrome;
-
-       nautilus_floating_bar_cleanup_actions (NAUTILUS_FLOATING_BAR (slot->details->floating_bar));
-       nautilus_floating_bar_set_show_spinner (NAUTILUS_FLOATING_BAR (slot->details->floating_bar),
-                                               slot->details->allow_stop);
-
-       g_object_get (nautilus_window_slot_get_window (slot),
-                     "disable-chrome", &disable_chrome,
-                     NULL);
-
-       if ((primary_status == NULL && detail_status == NULL) || disable_chrome) {
-               gtk_widget_hide (slot->details->floating_bar);
-               return;
-       }
-
-       nautilus_floating_bar_set_labels (NAUTILUS_FLOATING_BAR (slot->details->floating_bar),
-                                         primary_status, detail_status);
-       gtk_widget_show (slot->details->floating_bar);
-}
-
-typedef struct {
-       gchar *primary_status;
-       gchar *detail_status;
-       NautilusWindowSlot *slot;
-} SetStatusData;
-
-static void
-set_status_data_free (gpointer data)
-{
-       SetStatusData *status_data = data;
-
-       g_free (status_data->primary_status);
-       g_free (status_data->detail_status);
-
-       g_slice_free (SetStatusData, data);
-}
-
-static gboolean
-set_status_timeout_cb (gpointer data)
-{
-       SetStatusData *status_data = data;
-
-       status_data->slot->details->set_status_timeout_id = 0;
-       real_slot_set_short_status (status_data->slot,
-                                   status_data->primary_status,
-                                   status_data->detail_status);
-
-       return FALSE;
-}
-
-static void
-set_floating_bar_status (NautilusWindowSlot *slot,
-                        const gchar *primary_status,
-                        const gchar *detail_status)
-{
-       GtkSettings *settings;
-       gint double_click_time;
-       SetStatusData *status_data;
-
-       if (slot->details->set_status_timeout_id != 0) {
-               g_source_remove (slot->details->set_status_timeout_id);
-               slot->details->set_status_timeout_id = 0;
-       }
-
-       settings = gtk_settings_get_for_screen (gtk_widget_get_screen (GTK_WIDGET 
(slot->details->content_view)));
-       g_object_get (settings,
-                     "gtk-double-click-time", &double_click_time,
-                     NULL);
-
-       status_data = g_slice_new0 (SetStatusData);
-       status_data->primary_status = g_strdup (primary_status);
-       status_data->detail_status = g_strdup (detail_status);
-       status_data->slot = slot;
-
-       /* waiting for half of the double-click-time before setting
-        * the status seems to be a good approximation of not setting it
-        * too often and not delaying the statusbar too much.
-        */
-       slot->details->set_status_timeout_id =
-               g_timeout_add_full (G_PRIORITY_DEFAULT,
-                                   (guint) (double_click_time / 2),
-                                   set_status_timeout_cb,
-                                   status_data,
-                                   set_status_data_free);
-}
-
-void
-nautilus_window_slot_set_status (NautilusWindowSlot *slot,
-                                const char *primary_status,
-                                const char *detail_status)
-{
-       g_assert (NAUTILUS_IS_WINDOW_SLOT (slot));
-
-       if (slot->details->content_view != NULL) {
-               set_floating_bar_status (slot, primary_status, detail_status);
-       }
-}
-
 /* returns either the pending or the actual current uri */
 char *
 nautilus_window_slot_get_current_uri (NautilusWindowSlot *slot)
@@ -2851,7 +2584,7 @@ nautilus_window_slot_get_current_view (NautilusWindowSlot *slot)
 void
 nautilus_window_slot_go_home (NautilusWindowSlot *slot,
                              NautilusWindowOpenFlags flags)
-{                            
+{
        GFile *home;
 
        g_return_if_fail (NAUTILUS_IS_WINDOW_SLOT (slot));
diff --git a/src/nautilus-window-slot.h b/src/nautilus-window-slot.h
index ed7e780..97ff788 100644
--- a/src/nautilus-window-slot.h
+++ b/src/nautilus-window-slot.h
@@ -120,9 +120,6 @@ void    nautilus_window_slot_go_home                           (NautilusWindowSlot *slot,
 void    nautilus_window_slot_go_up                         (NautilusWindowSlot *slot,
                                                            NautilusWindowOpenFlags flags);
 
-void    nautilus_window_slot_set_status                           (NautilusWindowSlot *slot,
-                                                           const char         *primary_status,
-                                                           const char         *detail_status);
 void nautilus_window_slot_sync_view_mode (NautilusWindowSlot *slot);
 
 void nautilus_window_slot_display_view_selection_failure   (NautilusWindow *window,


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]