[nautilus/wip/csoriano/destktop-split2] window-slot: make it derivable class



commit 3d6c255338671620f5a203803b09d752727cce6f
Author: Carlos Soriano <csoriano gnome org>
Date:   Fri Mar 18 19:11:06 2016 +0100

    window-slot: make it derivable class

 src/nautilus-window-slot.c |  782 +++++++++++++++++++++++---------------------
 src/nautilus-window-slot.h |   31 +--
 2 files changed, 419 insertions(+), 394 deletions(-)
---
diff --git a/src/nautilus-window-slot.c b/src/nautilus-window-slot.c
index 83b5405..83bbe7a 100644
--- a/src/nautilus-window-slot.c
+++ b/src/nautilus-window-slot.c
@@ -48,8 +48,6 @@
 #include <libnautilus-private/nautilus-profile.h>
 #include <libnautilus-extension/nautilus-location-widget-provider.h>
 
-G_DEFINE_TYPE (NautilusWindowSlot, nautilus_window_slot, GTK_TYPE_BOX);
-
 enum {
        ACTIVE,
        INACTIVE,
@@ -66,7 +64,7 @@ enum {
        NUM_PROPERTIES
 };
 
-struct NautilusWindowSlotDetails {
+typedef struct {
        NautilusWindow *window;
 
         gboolean active : 1;
@@ -124,37 +122,42 @@ struct NautilusWindowSlotDetails {
        gboolean tried_mount;
         gint view_mode_before_search;
         gint view_mode_before_places;
-};
+} NautilusWindowSlotPrivate;
+
+G_DEFINE_TYPE_WITH_PRIVATE (NautilusWindowSlot, nautilus_window_slot, GTK_TYPE_BOX);
 
 static guint signals[LAST_SIGNAL] = { 0 };
 static GParamSpec *properties[NUM_PROPERTIES] = { NULL, };
 
-static void nautilus_window_slot_force_reload (NautilusWindowSlot *slot);
-static void change_view (NautilusWindowSlot *slot);
-static void hide_query_editor (NautilusWindowSlot *slot);
-static void nautilus_window_slot_sync_actions (NautilusWindowSlot *slot);
-static void nautilus_window_slot_connect_new_content_view (NautilusWindowSlot *slot);
-static void nautilus_window_slot_disconnect_content_view (NautilusWindowSlot *slot);
-static gboolean nautilus_window_slot_content_view_matches (NautilusWindowSlot *slot, guint id);
-static NautilusView* nautilus_window_slot_get_view_for_location (NautilusWindowSlot *slot, GFile *location);
-static void nautilus_window_slot_set_content_view (NautilusWindowSlot *slot, guint id);
-static void nautilus_window_slot_set_loading (NautilusWindowSlot *slot, gboolean loading);
-char * nautilus_window_slot_get_location_uri (NautilusWindowSlot *slot);
-static void nautilus_window_slot_set_search_visible (NautilusWindowSlot *slot,
-                                                    gboolean            visible);
-static gboolean nautilus_window_slot_get_search_visible (NautilusWindowSlot *slot);
-static void nautilus_window_slot_set_location (NautilusWindowSlot *slot,
+static void nautilus_window_slot_force_reload (NautilusWindowSlot *self);
+static void change_view (NautilusWindowSlot *self);
+static void hide_query_editor (NautilusWindowSlot *self);
+static void nautilus_window_slot_sync_actions (NautilusWindowSlot *self);
+static void nautilus_window_slot_connect_new_content_view (NautilusWindowSlot *self);
+static void nautilus_window_slot_disconnect_content_view (NautilusWindowSlot *self);
+static gboolean nautilus_window_slot_content_view_matches (NautilusWindowSlot *self, guint id);
+static NautilusView* nautilus_window_slot_get_view_for_location (NautilusWindowSlot *self, GFile *location);
+static void nautilus_window_slot_set_content_view (NautilusWindowSlot *self, guint id);
+static void nautilus_window_slot_set_loading (NautilusWindowSlot *self, gboolean loading);
+char * nautilus_window_slot_get_location_uri (NautilusWindowSlot *self);
+static void nautilus_window_slot_set_search_visible (NautilusWindowSlot *self,
+                                                     gboolean            visible);
+static gboolean nautilus_window_slot_get_search_visible (NautilusWindowSlot *self);
+static void nautilus_window_slot_set_location (NautilusWindowSlot *self,
                                                GFile              *location);
 
 static NautilusView*
-nautilus_window_slot_get_view_for_location (NautilusWindowSlot *slot,
+nautilus_window_slot_get_view_for_location (NautilusWindowSlot *self,
                                             GFile              *location)
 {
+        NautilusWindowSlotPrivate *priv;
+
         NautilusWindow *window;
         NautilusView *view;
         NautilusFile *file;
 
-        window = nautilus_window_slot_get_window (slot);
+        priv = nautilus_window_slot_get_instance_private (self);
+        window = nautilus_window_slot_get_window (self);
         file = nautilus_file_get (location);
         view = NULL;
 
@@ -163,13 +166,13 @@ nautilus_window_slot_get_view_for_location (NautilusWindowSlot *slot,
         * for the desktop window.
         */
         if (NAUTILUS_IS_DESKTOP_WINDOW (window)) {
-                view = NAUTILUS_VIEW (nautilus_files_view_new (NAUTILUS_VIEW_DESKTOP_ID, slot));
+                view = NAUTILUS_VIEW (nautilus_files_view_new (NAUTILUS_VIEW_DESKTOP_ID, self));
         } else if (nautilus_file_is_other_locations (file)) {
                 view = NAUTILUS_VIEW (nautilus_places_view_new ());
 
                 /* Save the current view, so we can go back after places view */
-                if (slot->details->content_view && NAUTILUS_IS_FILES_VIEW (slot->details->content_view)) {
-                        slot->details->view_mode_before_places = nautilus_files_view_get_view_id 
(NAUTILUS_FILES_VIEW (slot->details->content_view));
+                if (priv->content_view && NAUTILUS_IS_FILES_VIEW (priv->content_view)) {
+                        priv->view_mode_before_places = nautilus_files_view_get_view_id (NAUTILUS_FILES_VIEW 
(priv->content_view));
                 }
         } else {
                 guint view_id;
@@ -181,22 +184,22 @@ nautilus_window_slot_get_view_for_location (NautilusWindowSlot *slot,
                         /* If it's already set, is because we already made the change to search mode,
                          * so the view mode of the current view will be the one search is using,
                          * which is not the one we are interested in */
-                        if (slot->details->view_mode_before_search == NAUTILUS_VIEW_INVALID_ID) {
-                                slot->details->view_mode_before_search = nautilus_files_view_get_view_id 
(NAUTILUS_FILES_VIEW (slot->details->content_view));
+                        if (priv->view_mode_before_search == NAUTILUS_VIEW_INVALID_ID) {
+                                priv->view_mode_before_search = nautilus_files_view_get_view_id 
(NAUTILUS_FILES_VIEW (priv->content_view));
                         }
                         view_id = g_settings_get_enum (nautilus_preferences, 
NAUTILUS_PREFERENCES_SEARCH_VIEW);
-                } else if (slot->details->content_view != NULL) {
+                } else if (priv->content_view != NULL) {
                         /* If there is already a view, just use the view mode that it's currently using, or
                          * if we were on search before, use what we were using before entering
                          * search mode */
-                        if (slot->details->view_mode_before_search != NAUTILUS_VIEW_INVALID_ID) {
-                                view_id = slot->details->view_mode_before_search;
-                                slot->details->view_mode_before_search = NAUTILUS_VIEW_INVALID_ID;
-                        } else if (NAUTILUS_IS_PLACES_VIEW (slot->details->content_view)) {
-                                view_id = slot->details->view_mode_before_places;
-                                slot->details->view_mode_before_places = NAUTILUS_VIEW_INVALID_ID;
+                        if (priv->view_mode_before_search != NAUTILUS_VIEW_INVALID_ID) {
+                                view_id = priv->view_mode_before_search;
+                                priv->view_mode_before_search = NAUTILUS_VIEW_INVALID_ID;
+                        } else if (NAUTILUS_IS_PLACES_VIEW (priv->content_view)) {
+                                view_id = priv->view_mode_before_places;
+                                priv->view_mode_before_places = NAUTILUS_VIEW_INVALID_ID;
                         } else {
-                               view_id = nautilus_files_view_get_view_id (NAUTILUS_FILES_VIEW 
(slot->details->content_view));
+                               view_id = nautilus_files_view_get_view_id (NAUTILUS_FILES_VIEW 
(priv->content_view));
                         }
                }
 
@@ -207,10 +210,10 @@ nautilus_window_slot_get_view_for_location (NautilusWindowSlot *slot,
                }
 
                 /* Try to reuse the current view */
-                if (nautilus_window_slot_content_view_matches (slot, view_id)) {
-                        view = slot->details->content_view;
+                if (nautilus_window_slot_content_view_matches (self, view_id)) {
+                        view = priv->content_view;
                 } else {
-                        view = NAUTILUS_VIEW (nautilus_files_view_new (view_id, slot));
+                        view = NAUTILUS_VIEW (nautilus_files_view_new (view_id, self));
                 }
         }
 
@@ -220,83 +223,92 @@ nautilus_window_slot_get_view_for_location (NautilusWindowSlot *slot,
 }
 
 static gboolean
-nautilus_window_slot_content_view_matches (NautilusWindowSlot *slot,
+nautilus_window_slot_content_view_matches (NautilusWindowSlot *self,
                                            guint                id)
 {
-       if (slot->details->content_view == NULL) {
+        NautilusWindowSlotPrivate *priv;
+
+        priv = nautilus_window_slot_get_instance_private (self);
+       if (priv->content_view == NULL) {
                return FALSE;
        }
 
-        if (id == NAUTILUS_VIEW_INVALID_ID && NAUTILUS_IS_PLACES_VIEW (slot->details->content_view)) {
+        if (id == NAUTILUS_VIEW_INVALID_ID && NAUTILUS_IS_PLACES_VIEW (priv->content_view)) {
                 return TRUE;
-        } else if (id != NAUTILUS_VIEW_INVALID_ID && NAUTILUS_IS_FILES_VIEW (slot->details->content_view)){
-                return nautilus_files_view_get_view_id (NAUTILUS_FILES_VIEW (slot->details->content_view)) 
== id;
+        } else if (id != NAUTILUS_VIEW_INVALID_ID && NAUTILUS_IS_FILES_VIEW (priv->content_view)){
+                return nautilus_files_view_get_view_id (NAUTILUS_FILES_VIEW (priv->content_view)) == id;
         } else {
                 return FALSE;
         }
 }
 
 static void
-update_search_visible (NautilusWindowSlot *slot)
+update_search_visible (NautilusWindowSlot *self)
 {
+        NautilusWindowSlotPrivate *priv;
         NautilusQuery *query;
         NautilusView *view;
         GAction *action;
 
-        action =  g_action_map_lookup_action (G_ACTION_MAP (slot->details->slot_action_group),
+        priv = nautilus_window_slot_get_instance_private (self);
+
+        action =  g_action_map_lookup_action (G_ACTION_MAP (priv->slot_action_group),
                                               "search-visible");
         /* Don't allow search on desktop */
         g_simple_action_set_enabled (G_SIMPLE_ACTION (action),
-                                      !NAUTILUS_IS_DESKTOP_CANVAS_VIEW 
(nautilus_window_slot_get_current_view (slot)));
+                                      !NAUTILUS_IS_DESKTOP_CANVAS_VIEW 
(nautilus_window_slot_get_current_view (self)));
 
-        view = nautilus_window_slot_get_current_view (slot);
+        view = nautilus_window_slot_get_current_view (self);
         /* If we changed location just to another search location, for example,
          * when changing the query, just keep the search visible.
          * Make sure the search is visible though, since we could be returning
          * from a previous search location when using the history */
         if (nautilus_view_is_searching (view)) {
-                nautilus_window_slot_set_search_visible (slot, TRUE);
+                nautilus_window_slot_set_search_visible (self, TRUE);
                 return;
          }
 
-        query = nautilus_query_editor_get_query (slot->details->query_editor);
+        query = nautilus_query_editor_get_query (priv->query_editor);
         if (query) {
                 /* If the view is not searching, but search is visible, and the
                  * query is empty, we don't hide it. Some users enable the search
                  * and then change locations, then they search. */
                  if (!nautilus_query_is_empty (query))
-                        nautilus_window_slot_set_search_visible (slot, FALSE);
+                        nautilus_window_slot_set_search_visible (self, FALSE);
                 g_object_unref (query);
         }
 
-        if (slot->details->pending_search_text)
-                nautilus_window_slot_search (slot, g_strdup (slot->details->pending_search_text));
+        if (priv->pending_search_text)
+                nautilus_window_slot_search (self, g_strdup (priv->pending_search_text));
 }
 
 static void
-nautilus_window_slot_sync_actions (NautilusWindowSlot *slot)
+nautilus_window_slot_sync_actions (NautilusWindowSlot *self)
 {
+        NautilusWindowSlotPrivate *priv;
+
         GAction *action;
         GVariant *variant;
 
-        if (!nautilus_window_slot_get_active (slot)) {
+        priv = nautilus_window_slot_get_instance_private (self);
+        if (!nautilus_window_slot_get_active (self)) {
                return;
        }
 
-       if (slot->details->content_view == NULL || slot->details->new_content_view != NULL) {
+       if (priv->content_view == NULL || priv->new_content_view != NULL) {
                return;
        }
 
         /* Check if we need to close the search or show search after changing the location.
          * Needs to be done after the change has been done, if not, a loop happens,
          * because setting the search enabled or not actually opens a location */
-        update_search_visible (slot);
+        update_search_visible (self);
 
         /* Files view mode */
-        action =  g_action_map_lookup_action (G_ACTION_MAP (slot->details->slot_action_group), 
"files-view-mode");
-        if (NAUTILUS_IS_FILES_VIEW (nautilus_window_slot_get_current_view (slot)) &&
-            !NAUTILUS_IS_DESKTOP_CANVAS_VIEW (nautilus_window_slot_get_current_view (slot))) {
-                variant = g_variant_new_uint32 (nautilus_files_view_get_view_id (NAUTILUS_FILES_VIEW 
(nautilus_window_slot_get_current_view (slot))));
+        action =  g_action_map_lookup_action (G_ACTION_MAP (priv->slot_action_group), "files-view-mode");
+        if (NAUTILUS_IS_FILES_VIEW (nautilus_window_slot_get_current_view (self)) &&
+            !NAUTILUS_IS_DESKTOP_CANVAS_VIEW (nautilus_window_slot_get_current_view (self))) {
+                variant = g_variant_new_uint32 (nautilus_files_view_get_view_id (NAUTILUS_FILES_VIEW 
(nautilus_window_slot_get_current_view (self))));
                 g_simple_action_set_enabled (G_SIMPLE_ACTION (action), TRUE);
                 g_action_change_state (action, variant);
         } else {
@@ -306,61 +318,66 @@ nautilus_window_slot_sync_actions (NautilusWindowSlot *slot)
 
 static void
 query_editor_cancel_callback (NautilusQueryEditor *editor,
-                             NautilusWindowSlot *slot)
+                              NautilusWindowSlot  *self)
 {
-       nautilus_window_slot_set_search_visible (slot, FALSE);
+       nautilus_window_slot_set_search_visible (self, FALSE);
 }
 
 static void
 query_editor_activated_callback (NautilusQueryEditor *editor,
-                                NautilusWindowSlot *slot)
+                                 NautilusWindowSlot  *self)
 {
-       if (slot->details->content_view != NULL) {
-                if (NAUTILUS_IS_FILES_VIEW (slot->details->content_view)) {
-                        nautilus_files_view_activate_selection (NAUTILUS_FILES_VIEW 
(slot->details->content_view));
+        NautilusWindowSlotPrivate *priv;
+
+        priv = nautilus_window_slot_get_instance_private (self);
+       if (priv->content_view != NULL) {
+                if (NAUTILUS_IS_FILES_VIEW (priv->content_view)) {
+                        nautilus_files_view_activate_selection (NAUTILUS_FILES_VIEW (priv->content_view));
                 }
 
-                nautilus_window_slot_set_search_visible (slot, FALSE);
+                nautilus_window_slot_set_search_visible (self, FALSE);
        }
 }
 
 static void
 query_editor_changed_callback (NautilusQueryEditor *editor,
-                              NautilusQuery *query,
-                              gboolean reload,
-                              NautilusWindowSlot *slot)
+                               NautilusQuery *query,
+                               gboolean reload,
+                               NautilusWindowSlot *self)
 {
         NautilusView *view;
 
-        view = nautilus_window_slot_get_current_view (slot);
+        view = nautilus_window_slot_get_current_view (self);
 
         nautilus_view_set_search_query (view, query);
-        nautilus_window_slot_open_location_full (slot, nautilus_view_get_location (view), 0, NULL);
+        nautilus_window_slot_open_location_full (self, nautilus_view_get_location (view), 0, NULL);
 }
 
 static void
-hide_query_editor (NautilusWindowSlot *slot)
+hide_query_editor (NautilusWindowSlot *self)
 {
+        NautilusWindowSlotPrivate *priv;
         NautilusView *view;
 
-        view = nautilus_window_slot_get_current_view (slot);
+        priv = nautilus_window_slot_get_instance_private (self);
+        view = nautilus_window_slot_get_current_view (self);
 
-       gtk_search_bar_set_search_mode (GTK_SEARCH_BAR (slot->details->query_editor), FALSE);
+       gtk_search_bar_set_search_mode (GTK_SEARCH_BAR (priv->query_editor), FALSE);
 
-       if (slot->details->qe_changed_id > 0) {
-               g_signal_handler_disconnect (slot->details->query_editor, slot->details->qe_changed_id);
-               slot->details->qe_changed_id = 0;
+       if (priv->qe_changed_id > 0) {
+               g_signal_handler_disconnect (priv->query_editor, priv->qe_changed_id);
+               priv->qe_changed_id = 0;
        }
-       if (slot->details->qe_cancel_id > 0) {
-               g_signal_handler_disconnect (slot->details->query_editor, slot->details->qe_cancel_id);
-               slot->details->qe_cancel_id = 0;
+       if (priv->qe_cancel_id > 0) {
+               g_signal_handler_disconnect (priv->query_editor, priv->qe_cancel_id);
+               priv->qe_cancel_id = 0;
        }
-       if (slot->details->qe_activated_id > 0) {
-               g_signal_handler_disconnect (slot->details->query_editor, slot->details->qe_activated_id);
-               slot->details->qe_activated_id = 0;
+       if (priv->qe_activated_id > 0) {
+               g_signal_handler_disconnect (priv->query_editor, priv->qe_activated_id);
+               priv->qe_activated_id = 0;
        }
 
-       nautilus_query_editor_set_query (slot->details->query_editor, NULL);
+       nautilus_query_editor_set_query (priv->query_editor, NULL);
 
         if (nautilus_view_is_searching (view)) {
                 GList *selection;
@@ -368,7 +385,7 @@ hide_query_editor (NautilusWindowSlot *slot)
                 selection = nautilus_view_get_selection (view);
 
                 nautilus_view_set_search_query (view, NULL);
-                nautilus_window_slot_open_location_full (slot,
+                nautilus_window_slot_open_location_full (self,
                                                          nautilus_view_get_location (view),
                                                          0,
                                                          selection);
@@ -376,31 +393,36 @@ hide_query_editor (NautilusWindowSlot *slot)
                 nautilus_file_list_free (selection);
         }
 
-        if (nautilus_window_slot_get_active (slot)) {
-                gtk_widget_grab_focus (GTK_WIDGET (slot->details->window));
+        if (nautilus_window_slot_get_active (self)) {
+                gtk_widget_grab_focus (GTK_WIDGET (priv->window));
         }
 }
 
 static GFile *
-nautilus_window_slot_get_current_location (NautilusWindowSlot *slot)
+nautilus_window_slot_get_current_location (NautilusWindowSlot *self)
 {
-       if (slot->details->pending_location != NULL) {
-               return slot->details->pending_location;
+        NautilusWindowSlotPrivate *priv;
+
+        priv = nautilus_window_slot_get_instance_private (self);
+       if (priv->pending_location != NULL) {
+               return priv->pending_location;
        }
 
-       if (slot->details->location != NULL) {
-               return slot->details->location;
+       if (priv->location != NULL) {
+               return priv->location;
        }
 
        return NULL;
 }
 
 static void
-show_query_editor (NautilusWindowSlot *slot)
+show_query_editor (NautilusWindowSlot *self)
 {
+        NautilusWindowSlotPrivate *priv;
         NautilusView *view;
 
-        view = nautilus_window_slot_get_current_view (slot);
+        priv = nautilus_window_slot_get_instance_private (self);
+        view = nautilus_window_slot_get_current_view (self);
 
         if (nautilus_view_is_searching (view)) {
                 NautilusQuery *query;
@@ -408,49 +430,54 @@ show_query_editor (NautilusWindowSlot *slot)
                 query = nautilus_view_get_search_query (view);
 
                 if (query != NULL) {
-                        nautilus_query_editor_set_query (slot->details->query_editor, query);
+                        nautilus_query_editor_set_query (priv->query_editor, query);
                 }
         }
 
-        gtk_search_bar_set_search_mode (GTK_SEARCH_BAR (slot->details->query_editor), TRUE);
-       gtk_widget_grab_focus (GTK_WIDGET (slot->details->query_editor));
+        gtk_search_bar_set_search_mode (GTK_SEARCH_BAR (priv->query_editor), TRUE);
+       gtk_widget_grab_focus (GTK_WIDGET (priv->query_editor));
 
-       if (slot->details->qe_changed_id == 0) {
-               slot->details->qe_changed_id =
-                       g_signal_connect (slot->details->query_editor, "changed",
-                                         G_CALLBACK (query_editor_changed_callback), slot);
+       if (priv->qe_changed_id == 0) {
+               priv->qe_changed_id =
+                       g_signal_connect (priv->query_editor, "changed",
+                                         G_CALLBACK (query_editor_changed_callback), self);
        }
-       if (slot->details->qe_cancel_id == 0) {
-               slot->details->qe_cancel_id =
-                       g_signal_connect (slot->details->query_editor, "cancel",
-                                         G_CALLBACK (query_editor_cancel_callback), slot);
+       if (priv->qe_cancel_id == 0) {
+               priv->qe_cancel_id =
+                       g_signal_connect (priv->query_editor, "cancel",
+                                         G_CALLBACK (query_editor_cancel_callback), self);
        }
-       if (slot->details->qe_activated_id == 0) {
-               slot->details->qe_activated_id =
-                       g_signal_connect (slot->details->query_editor, "activated",
-                                         G_CALLBACK (query_editor_activated_callback), slot);
+       if (priv->qe_activated_id == 0) {
+               priv->qe_activated_id =
+                       g_signal_connect (priv->query_editor, "activated",
+                                         G_CALLBACK (query_editor_activated_callback), self);
        }
 }
 
 static void
-nautilus_window_slot_set_search_visible (NautilusWindowSlot *slot,
+nautilus_window_slot_set_search_visible (NautilusWindowSlot *self,
                                         gboolean            visible)
 {
+        NautilusWindowSlotPrivate *priv;
         GAction *action;
 
-        action = g_action_map_lookup_action (G_ACTION_MAP (slot->details->slot_action_group),
+        priv = nautilus_window_slot_get_instance_private (self);
+
+        action = g_action_map_lookup_action (G_ACTION_MAP (priv->slot_action_group),
                                              "search-visible");
         g_action_change_state (action, g_variant_new_boolean (visible));
 }
 
 static gboolean
-nautilus_window_slot_get_search_visible (NautilusWindowSlot *slot)
+nautilus_window_slot_get_search_visible (NautilusWindowSlot *self)
 {
+        NautilusWindowSlotPrivate *priv;
         GAction *action;
         GVariant *state;
         gboolean searching;
 
-        action = g_action_map_lookup_action (G_ACTION_MAP (slot->details->slot_action_group),
+        priv = nautilus_window_slot_get_instance_private (self);
+        action = g_action_map_lookup_action (G_ACTION_MAP (priv->slot_action_group),
                                              "search-visible");
         state = g_action_get_state (action);
         searching = g_variant_get_boolean (state);
@@ -461,78 +488,84 @@ nautilus_window_slot_get_search_visible (NautilusWindowSlot *slot)
 }
 
 void
-nautilus_window_slot_search (NautilusWindowSlot *slot,
+nautilus_window_slot_search (NautilusWindowSlot *self,
                              const gchar        *text)
 {
+        NautilusWindowSlotPrivate *priv;
         NautilusView *view;
 
-        if (slot->details->pending_search_text) {
-                g_free (slot->details->pending_search_text);
-                slot->details->pending_search_text = NULL;
+        priv = nautilus_window_slot_get_instance_private (self);
+        if (priv->pending_search_text) {
+                g_free (priv->pending_search_text);
+                priv->pending_search_text = NULL;
         }
 
-        view = nautilus_window_slot_get_current_view (slot);
+        view = nautilus_window_slot_get_current_view (self);
         /* We could call this when the location is still being checked in the
          * window slot. For that, save the search we want to do for once we have
          * a view set up */
         if (view) {
-                nautilus_window_slot_set_search_visible (slot, TRUE);
-                nautilus_query_editor_set_text (slot->details->query_editor, text);
+                nautilus_window_slot_set_search_visible (self, TRUE);
+                nautilus_query_editor_set_text (priv->query_editor, text);
         } else {
-                slot->details->pending_search_text = g_strdup (text);
+                priv->pending_search_text = g_strdup (text);
         }
 }
 
 gboolean
-nautilus_window_slot_handle_event (NautilusWindowSlot *slot,
+nautilus_window_slot_handle_event (NautilusWindowSlot *self,
                                   GdkEventKey        *event)
 {
+        NautilusWindowSlotPrivate *priv;
        NautilusWindow *window;
        gboolean retval;
 
+        priv = nautilus_window_slot_get_instance_private (self);
        retval = FALSE;
-       window = nautilus_window_slot_get_window (slot);
+       window = nautilus_window_slot_get_window (self);
        if (!NAUTILUS_IS_DESKTOP_WINDOW (window)) {
-                retval = gtk_search_bar_handle_event (GTK_SEARCH_BAR (slot->details->query_editor),
+                retval = gtk_search_bar_handle_event (GTK_SEARCH_BAR (priv->query_editor),
                                                       (GdkEvent*) event);
        }
 
        if (retval) {
-               nautilus_window_slot_set_search_visible (slot, TRUE);
+               nautilus_window_slot_set_search_visible (self, TRUE);
        }
 
        return retval;
 }
 
 static void
-real_active (NautilusWindowSlot *slot)
+real_active (NautilusWindowSlot *self)
 {
+        NautilusWindowSlotPrivate *priv;
        NautilusWindow *window;
        int page_num;
 
-       window = slot->details->window;
+        priv = nautilus_window_slot_get_instance_private (self);
+       window = priv->window;
        page_num = gtk_notebook_page_num (GTK_NOTEBOOK (nautilus_window_get_notebook (window)),
-                                         GTK_WIDGET (slot));
+                                         GTK_WIDGET (self));
        g_assert (page_num >= 0);
 
        gtk_notebook_set_current_page (GTK_NOTEBOOK (nautilus_window_get_notebook (window)), page_num);
 
        /* sync window to new slot */
-       nautilus_window_sync_allow_stop (window, slot);
-       nautilus_window_sync_title (window, slot);
+       nautilus_window_sync_allow_stop (window, self);
+       nautilus_window_sync_title (window, self);
        nautilus_window_sync_location_widgets (window);
-       nautilus_window_slot_sync_actions (slot);
+       nautilus_window_slot_sync_actions (self);
 
-        gtk_widget_insert_action_group (GTK_WIDGET (window), "slot", slot->details->slot_action_group);
+        gtk_widget_insert_action_group (GTK_WIDGET (window), "slot", priv->slot_action_group);
 }
 
 static void
-real_inactive (NautilusWindowSlot *slot)
+real_inactive (NautilusWindowSlot *self)
 {
        NautilusWindow *window;
 
-       window = nautilus_window_slot_get_window (slot);
-       g_assert (slot == nautilus_window_get_active_slot (window));
+       window = nautilus_window_slot_get_window (self);
+       g_assert (self == nautilus_window_get_active_slot (window));
 
         gtk_widget_insert_action_group (GTK_WIDGET (window), "slot", NULL);
 }
@@ -541,32 +574,37 @@ static void
 remove_all_extra_location_widgets (GtkWidget *widget,
                                   gpointer data)
 {
-       NautilusWindowSlot *slot = data;
+        NautilusWindowSlotPrivate *priv;
+       NautilusWindowSlot *self = data;
        NautilusDirectory *directory;
 
-       directory = nautilus_directory_get (slot->details->location);
-       if (widget != GTK_WIDGET (slot->details->query_editor)) {
-               gtk_container_remove (GTK_CONTAINER (slot->details->extra_location_widgets), widget);
+        priv = nautilus_window_slot_get_instance_private (self);
+       directory = nautilus_directory_get (priv->location);
+       if (widget != GTK_WIDGET (priv->query_editor)) {
+               gtk_container_remove (GTK_CONTAINER (priv->extra_location_widgets), widget);
        }
 
        nautilus_directory_unref (directory);
 }
 
 static void
-nautilus_window_slot_remove_extra_location_widgets (NautilusWindowSlot *slot)
+nautilus_window_slot_remove_extra_location_widgets (NautilusWindowSlot *self)
 {
-       gtk_container_foreach (GTK_CONTAINER (slot->details->extra_location_widgets),
+        NautilusWindowSlotPrivate *priv;
+
+        priv = nautilus_window_slot_get_instance_private (self);
+       gtk_container_foreach (GTK_CONTAINER (priv->extra_location_widgets),
                               remove_all_extra_location_widgets,
-                              slot);
+                              self);
 }
 
 static void
 nautilus_window_slot_add_extra_location_widget (NautilusWindowSlot *slot,
                                                GtkWidget *widget)
 {
-       gtk_box_pack_start (GTK_BOX (slot->details->extra_location_widgets),
+       gtk_box_pack_start (GTK_BOX (priv->extra_location_widgets),
                            widget, FALSE, TRUE, 0);
-       gtk_widget_show (slot->details->extra_location_widgets);
+       gtk_widget_show (priv->extra_location_widgets);
 }
 
 static void
@@ -606,7 +644,7 @@ nautilus_window_slot_get_property (GObject *object,
                 g_value_set_boolean (value, nautilus_window_slot_get_active (slot));
                 break;
        case PROP_WINDOW:
-               g_value_set_object (value, slot->details->window);
+               g_value_set_object (value, priv->window);
                break;
         case PROP_ICON:
                 g_value_set_object (value, nautilus_window_slot_get_icon (slot));
@@ -642,19 +680,19 @@ nautilus_window_slot_constructed (GObject *object)
        extras_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0);
         style_context = gtk_widget_get_style_context (extras_vbox);
         gtk_style_context_add_class (style_context, "searchbar-container");
-       slot->details->extra_location_widgets = extras_vbox;
+       priv->extra_location_widgets = extras_vbox;
        gtk_box_pack_start (GTK_BOX (slot), extras_vbox, FALSE, FALSE, 0);
        gtk_widget_show (extras_vbox);
 
-       slot->details->query_editor = NAUTILUS_QUERY_EDITOR (nautilus_query_editor_new ());
-        gtk_widget_show (GTK_WIDGET (slot->details->query_editor));
-        nautilus_window_slot_add_extra_location_widget (slot, GTK_WIDGET (slot->details->query_editor));
+       priv->query_editor = NAUTILUS_QUERY_EDITOR (nautilus_query_editor_new ());
+        gtk_widget_show (GTK_WIDGET (priv->query_editor));
+        nautilus_window_slot_add_extra_location_widget (slot, GTK_WIDGET (priv->query_editor));
 
         g_object_bind_property (slot, "location",
-                                slot->details->query_editor, "location",
+                                priv->query_editor, "location",
                                 G_BINDING_DEFAULT);
 
-       slot->details->title = g_strdup (_("Loading…"));
+       priv->title = g_strdup (_("Loading…"));
 }
 
 static void
@@ -718,22 +756,22 @@ nautilus_window_slot_init (NautilusWindowSlot *slot)
 
         app = g_application_get_default ();
 
-       slot->details = G_TYPE_INSTANCE_GET_PRIVATE
+       priv = G_TYPE_INSTANCE_GET_PRIVATE
                (slot, NAUTILUS_TYPE_WINDOW_SLOT, NautilusWindowSlotDetails);
 
-        slot->details->slot_action_group = G_ACTION_GROUP (g_simple_action_group_new ());
-        g_action_map_add_action_entries (G_ACTION_MAP (slot->details->slot_action_group),
+        priv->slot_action_group = G_ACTION_GROUP (g_simple_action_group_new ());
+        g_action_map_add_action_entries (G_ACTION_MAP (priv->slot_action_group),
                                          slot_entries,
                                          G_N_ELEMENTS (slot_entries),
                                          slot);
         gtk_widget_insert_action_group (GTK_WIDGET (slot),
                                         "slot",
-                                        G_ACTION_GROUP (slot->details->slot_action_group));
+                                        G_ACTION_GROUP (priv->slot_action_group));
         nautilus_application_add_accelerator (app, "slot.files-view-mode(1)", "<control>1");
         nautilus_application_add_accelerator (app, "slot.files-view-mode(0)", "<control>2");
         nautilus_application_add_accelerator (app, "slot.search-visible", "<control>f");
 
-        slot->details->view_mode_before_search = NAUTILUS_VIEW_INVALID_ID;
+        priv->view_mode_before_search = NAUTILUS_VIEW_INVALID_ID;
 }
 
 #define DEBUG_FLAG NAUTILUS_DEBUG_WINDOW
@@ -780,8 +818,8 @@ nautilus_window_slot_open_location_full (NautilusWindowSlot      *slot,
         window = nautilus_window_slot_get_window (slot);
         is_desktop = NAUTILUS_IS_DESKTOP_CANVAS_VIEW (window);
 
-        if (slot->details->content_view) {
-                old_selection = nautilus_view_get_selection (slot->details->content_view);
+        if (priv->content_view) {
+                old_selection = nautilus_view_get_selection (priv->content_view);
        }
         if (!is_desktop &&
             old_location && g_file_equal (old_location, location) &&
@@ -865,11 +903,11 @@ save_scroll_position_for_history (NautilusWindowSlot *slot)
 {
         char *current_pos;
         /* Set current_bookmark scroll pos */
-        if (slot->details->current_location_bookmark != NULL &&
-            slot->details->content_view != NULL &&
-            NAUTILUS_IS_FILES_VIEW (slot->details->content_view)) {
-                current_pos = nautilus_files_view_get_first_visible_file (NAUTILUS_FILES_VIEW 
(slot->details->content_view));
-                nautilus_bookmark_set_scroll_pos (slot->details->current_location_bookmark, current_pos);
+        if (priv->current_location_bookmark != NULL &&
+            priv->content_view != NULL &&
+            NAUTILUS_IS_FILES_VIEW (priv->content_view)) {
+                current_pos = nautilus_files_view_get_first_visible_file (NAUTILUS_FILES_VIEW 
(priv->content_view));
+                nautilus_bookmark_set_scroll_pos (priv->current_location_bookmark, current_pos);
                 g_free (current_pos);
         }
 }
@@ -917,25 +955,25 @@ begin_location_change (NautilusWindowSlot         *slot,
 
         new_selection = check_select_old_location_containing_folder (new_selection, location, 
previous_location);
 
-       g_assert (slot->details->pending_location == NULL);
+       g_assert (priv->pending_location == NULL);
 
-       slot->details->pending_location = g_object_ref (location);
-       slot->details->location_change_type = type;
-       slot->details->location_change_distance = distance;
-       slot->details->tried_mount = FALSE;
-       slot->details->pending_selection = nautilus_file_list_copy (new_selection);
+       priv->pending_location = g_object_ref (location);
+       priv->location_change_type = type;
+       priv->location_change_distance = distance;
+       priv->tried_mount = FALSE;
+       priv->pending_selection = nautilus_file_list_copy (new_selection);
 
-       slot->details->pending_scroll_to = g_strdup (scroll_pos);
+       priv->pending_scroll_to = g_strdup (scroll_pos);
 
         check_force_reload (location, type);
 
         save_scroll_position_for_history (slot);
 
        /* Get the info needed to make decisions about how to open the new location */
-       slot->details->determine_view_file = nautilus_file_get (location);
-       g_assert (slot->details->determine_view_file != NULL);
+       priv->determine_view_file = nautilus_file_get (location);
+       g_assert (priv->determine_view_file != NULL);
 
-       nautilus_file_call_when_ready (slot->details->determine_view_file,
+       nautilus_file_call_when_ready (priv->determine_view_file,
                                       NAUTILUS_FILE_ATTRIBUTE_INFO |
                                       NAUTILUS_FILE_ATTRIBUTE_MOUNT,
                                        got_file_info_for_view_selection_callback,
@@ -950,8 +988,8 @@ nautilus_window_slot_set_location (NautilusWindowSlot *slot,
 {
        GFile *old_location;
 
-       if (slot->details->location &&
-           g_file_equal (location, slot->details->location)) {
+       if (priv->location &&
+           g_file_equal (location, priv->location)) {
                /* The location name could be updated even if the location
                 * wasn't changed. This is the case for a search.
                 */
@@ -959,11 +997,11 @@ nautilus_window_slot_set_location (NautilusWindowSlot *slot,
                return;
        }
 
-       old_location = slot->details->location;
-       slot->details->location = g_object_ref (location);
+       old_location = priv->location;
+       priv->location = g_object_ref (location);
 
         if (nautilus_window_slot_get_active (slot)) {
-               nautilus_window_sync_location_widgets (slot->details->window);
+               nautilus_window_sync_location_widgets (priv->window);
        }
 
        nautilus_window_slot_update_title (slot);
@@ -984,18 +1022,18 @@ viewed_file_changed_callback (NautilusFile *file,
 
         g_assert (NAUTILUS_IS_FILE (file));
        g_assert (NAUTILUS_IS_WINDOW_SLOT (slot));
-       g_assert (file == slot->details->viewed_file);
+       g_assert (file == priv->viewed_file);
 
         if (!nautilus_file_is_not_yet_confirmed (file)) {
-                slot->details->viewed_file_seen = TRUE;
+                priv->viewed_file_seen = TRUE;
         }
 
-       was_in_trash = slot->details->viewed_file_in_trash;
+       was_in_trash = priv->viewed_file_in_trash;
 
-       slot->details->viewed_file_in_trash = is_in_trash = nautilus_file_is_in_trash (file);
+       priv->viewed_file_in_trash = is_in_trash = nautilus_file_is_in_trash (file);
 
        if (nautilus_file_is_gone (file) || (is_in_trash && !was_in_trash)) {
-                if (slot->details->viewed_file_seen) {
+                if (priv->viewed_file_seen) {
                        GFile *go_to_file;
                        GFile *parent;
                        GFile *location;
@@ -1053,17 +1091,17 @@ nautilus_window_slot_set_viewed_file (NautilusWindowSlot *slot,
 {
        NautilusFileAttributes attributes;
 
-       if (slot->details->viewed_file == file) {
+       if (priv->viewed_file == file) {
                return;
        }
 
        nautilus_file_ref (file);
 
-       if (slot->details->viewed_file != NULL) {
-               g_signal_handlers_disconnect_by_func (slot->details->viewed_file,
+       if (priv->viewed_file != NULL) {
+               g_signal_handlers_disconnect_by_func (priv->viewed_file,
                                                      G_CALLBACK (viewed_file_changed_callback),
                                                      slot);
-               nautilus_file_monitor_remove (slot->details->viewed_file,
+               nautilus_file_monitor_remove (priv->viewed_file,
                                              slot);
        }
 
@@ -1077,8 +1115,8 @@ nautilus_window_slot_set_viewed_file (NautilusWindowSlot *slot,
                                         G_CALLBACK (viewed_file_changed_callback), slot, 0);
        }
 
-       nautilus_file_unref (slot->details->viewed_file);
-       slot->details->viewed_file = file;
+       nautilus_file_unref (priv->viewed_file);
+       priv->viewed_file = file;
 }
 
 typedef struct {
@@ -1107,19 +1145,19 @@ mount_not_mounted_callback (GObject *source_object,
                return;
        }
 
-       slot->details->mount_cancellable = NULL;
+       priv->mount_cancellable = NULL;
 
-       slot->details->determine_view_file = nautilus_file_get (slot->details->pending_location);
+       priv->determine_view_file = nautilus_file_get (priv->pending_location);
 
        error = NULL;
        if (!g_file_mount_enclosing_volume_finish (G_FILE (source_object), res, &error)) {
-               slot->details->mount_error = error;
-               got_file_info_for_view_selection_callback (slot->details->determine_view_file, slot);
-               slot->details->mount_error = NULL;
+               priv->mount_error = error;
+               got_file_info_for_view_selection_callback (priv->determine_view_file, slot);
+               priv->mount_error = NULL;
                g_error_free (error);
        } else {
-               nautilus_file_invalidate_all_attributes (slot->details->determine_view_file);
-               nautilus_file_call_when_ready (slot->details->determine_view_file,
+               nautilus_file_invalidate_all_attributes (priv->determine_view_file);
+               nautilus_file_call_when_ready (priv->determine_view_file,
                                               NAUTILUS_FILE_ATTRIBUTE_INFO |
                                               NAUTILUS_FILE_ATTRIBUTE_MOUNT,
                                               got_file_info_for_view_selection_callback,
@@ -1225,15 +1263,15 @@ handle_mount_if_needed (NautilusWindowSlot *slot,
         gboolean needs_mount_handling = FALSE;
 
        window = nautilus_window_slot_get_window (slot);
-        if (slot->details->mount_error) {
-                error = g_error_copy (slot->details->mount_error);
+        if (priv->mount_error) {
+                error = g_error_copy (priv->mount_error);
         } else if (nautilus_file_get_file_info_error (file) != NULL) {
                 error = g_error_copy (nautilus_file_get_file_info_error (file));
         }
 
         if (error && error->domain == G_IO_ERROR && error->code == G_IO_ERROR_NOT_MOUNTED &&
-            !slot->details->tried_mount) {
-                slot->details->tried_mount = TRUE;
+            !priv->tried_mount) {
+                priv->tried_mount = TRUE;
 
                 mount_op = gtk_mount_operation_new (GTK_WINDOW (window));
                 g_mount_operation_set_password_save (mount_op, G_PASSWORD_SAVE_FOR_SESSION);
@@ -1241,8 +1279,8 @@ handle_mount_if_needed (NautilusWindowSlot *slot,
                 data = g_new0 (MountNotMountedData, 1);
                 data->cancellable = g_cancellable_new ();
                 data->slot = slot;
-                slot->details->mount_cancellable = data->cancellable;
-                g_file_mount_enclosing_volume (location, 0, mount_op, slot->details->mount_cancellable,
+                priv->mount_cancellable = data->cancellable;
+                g_file_mount_enclosing_volume (location, 0, mount_op, priv->mount_cancellable,
                                                mount_not_mounted_callback, data);
                 g_object_unref (location);
                 g_object_unref (mount_op);
@@ -1265,20 +1303,20 @@ handle_regular_file_if_needed (NautilusWindowSlot *slot,
         parent_file = nautilus_file_get_parent (file);
         if ((parent_file != NULL) &&
             nautilus_file_get_file_type (file) == G_FILE_TYPE_REGULAR) {
-            if (slot->details->pending_selection != NULL) {
-                nautilus_file_list_free (slot->details->pending_selection);
+            if (priv->pending_selection != NULL) {
+                nautilus_file_list_free (priv->pending_selection);
             }
 
-            g_clear_object (&slot->details->pending_location);
-            g_free (slot->details->pending_scroll_to);
+            g_clear_object (&priv->pending_location);
+            g_free (priv->pending_scroll_to);
 
-            slot->details->pending_location = nautilus_file_get_parent_location (file);
-            slot->details->pending_selection = g_list_prepend (NULL, nautilus_file_ref (file));
-            slot->details->determine_view_file = nautilus_file_ref (parent_file);
-            slot->details->pending_scroll_to = nautilus_file_get_uri (file);
+            priv->pending_location = nautilus_file_get_parent_location (file);
+            priv->pending_selection = g_list_prepend (NULL, nautilus_file_ref (file));
+            priv->determine_view_file = nautilus_file_ref (parent_file);
+            priv->pending_scroll_to = nautilus_file_get_uri (file);
 
-            nautilus_file_invalidate_all_attributes (slot->details->determine_view_file);
-            nautilus_file_call_when_ready (slot->details->determine_view_file,
+            nautilus_file_invalidate_all_attributes (priv->determine_view_file);
+            nautilus_file_call_when_ready (priv->determine_view_file,
                                NAUTILUS_FILE_ATTRIBUTE_INFO |
                                NAUTILUS_FILE_ATTRIBUTE_MOUNT,
                                got_file_info_for_view_selection_callback,
@@ -1308,8 +1346,8 @@ got_file_info_for_view_selection_callback (NautilusFile *file,
        slot = callback_data;
        window = nautilus_window_slot_get_window (slot);
 
-       g_assert (slot->details->determine_view_file == file);
-       slot->details->determine_view_file = NULL;
+       g_assert (priv->determine_view_file == file);
+       priv->determine_view_file = NULL;
 
        nautilus_profile_start (NULL);
 
@@ -1319,13 +1357,13 @@ got_file_info_for_view_selection_callback (NautilusFile *file,
         if (handle_regular_file_if_needed (slot, file))
                 goto done;
 
-        if (slot->details->mount_error) {
-                error = g_error_copy (slot->details->mount_error);
+        if (priv->mount_error) {
+                error = g_error_copy (priv->mount_error);
         } else if (nautilus_file_get_file_info_error (file) != NULL) {
                 error = g_error_copy (nautilus_file_get_file_info_error (file));
         }
 
-       location = slot->details->pending_location;
+       location = priv->pending_location;
 
         /* desktop and other-locations GFile operations report G_IO_ERROR_NOT_SUPPORTED,
          * but it's not an actual error for Nautilus */
@@ -1424,27 +1462,27 @@ setup_view (NautilusWindowSlot *slot,
 
         nautilus_window_slot_disconnect_content_view (slot);
 
-        slot->details->new_content_view = view;
+        priv->new_content_view = view;
 
         nautilus_window_slot_connect_new_content_view (slot);
 
        /* Forward search selection and state before loading the new model */
-        old_location = slot->details->content_view ? nautilus_view_get_location 
(slot->details->content_view) : NULL;
+        old_location = priv->content_view ? nautilus_view_get_location (priv->content_view) : NULL;
 
        /* Actually load the pending location and selection: */
-        if (slot->details->pending_location != NULL) {
+        if (priv->pending_location != NULL) {
                load_new_location (slot,
-                                  slot->details->pending_location,
-                                  slot->details->pending_selection,
+                                  priv->pending_location,
+                                  priv->pending_selection,
                                   FALSE,
                                   TRUE);
 
-               nautilus_file_list_free (slot->details->pending_selection);
-               slot->details->pending_selection = NULL;
+               nautilus_file_list_free (priv->pending_selection);
+               priv->pending_selection = NULL;
        } else if (old_location != NULL) {
                 GList *selection;
 
-                selection = nautilus_view_get_selection (slot->details->content_view);
+                selection = nautilus_view_get_selection (priv->content_view);
 
                load_new_location (slot,
                                   old_location,
@@ -1458,7 +1496,7 @@ setup_view (NautilusWindowSlot *slot,
         }
 
         change_view (slot);
-        gtk_widget_show (GTK_WIDGET (slot->details->window));
+        gtk_widget_show (GTK_WIDGET (priv->window));
 
 out:
        nautilus_profile_end (NULL);
@@ -1482,16 +1520,16 @@ load_new_location (NautilusWindowSlot *slot,
 
        nautilus_profile_start (NULL);
        /* Note, these may recurse into report_load_underway */
-        if (slot->details->content_view != NULL && tell_current_content_view) {
-               view = slot->details->content_view;
-               nautilus_view_set_location (slot->details->content_view, location);
+        if (priv->content_view != NULL && tell_current_content_view) {
+               view = priv->content_view;
+               nautilus_view_set_location (priv->content_view, location);
         }
 
-        if (slot->details->new_content_view != NULL && tell_new_content_view &&
+        if (priv->new_content_view != NULL && tell_new_content_view &&
            (!tell_current_content_view ||
-            slot->details->new_content_view != slot->details->content_view) ) {
-               view = slot->details->new_content_view;
-               nautilus_view_set_location (slot->details->new_content_view, location);
+            priv->new_content_view != priv->content_view) ) {
+               view = priv->new_content_view;
+               nautilus_view_set_location (priv->new_content_view, location);
         }
         if (view) {
                /* new_content_view might have changed here if
@@ -1518,8 +1556,8 @@ end_location_change (NautilusWindowSlot *slot)
        /* Now we can free details->pending_scroll_to, since the load_complete
         * callback already has been emitted.
         */
-       g_free (slot->details->pending_scroll_to);
-       slot->details->pending_scroll_to = NULL;
+       g_free (priv->pending_scroll_to);
+       priv->pending_scroll_to = NULL;
 
        free_location_change (slot);
 }
@@ -1527,24 +1565,24 @@ end_location_change (NautilusWindowSlot *slot)
 static void
 free_location_change (NautilusWindowSlot *slot)
 {
-       g_clear_object (&slot->details->pending_location);
-       nautilus_file_list_free (slot->details->pending_selection);
-       slot->details->pending_selection = NULL;
+       g_clear_object (&priv->pending_location);
+       nautilus_file_list_free (priv->pending_selection);
+       priv->pending_selection = NULL;
 
         /* Don't free details->pending_scroll_to, since thats needed until
          * the load_complete callback.
          */
 
-       if (slot->details->mount_cancellable != NULL) {
-               g_cancellable_cancel (slot->details->mount_cancellable);
-               slot->details->mount_cancellable = NULL;
+       if (priv->mount_cancellable != NULL) {
+               g_cancellable_cancel (priv->mount_cancellable);
+               priv->mount_cancellable = NULL;
        }
 
-        if (slot->details->determine_view_file != NULL) {
+        if (priv->determine_view_file != NULL) {
                nautilus_file_cancel_call_when_ready
-                       (slot->details->determine_view_file,
+                       (priv->determine_view_file,
                         got_file_info_for_view_selection_callback, slot);
-                slot->details->determine_view_file = NULL;
+                priv->determine_view_file = NULL;
         }
 }
 
@@ -1566,20 +1604,20 @@ nautilus_window_slot_set_content_view (NautilusWindowSlot *slot,
                return;
         }
 
-        selection = nautilus_view_get_selection (slot->details->content_view);
+        selection = nautilus_view_get_selection (priv->content_view);
         view = nautilus_files_view_new (id, slot);
 
         nautilus_window_slot_stop_loading (slot);
 
         nautilus_window_slot_set_allow_stop (slot, TRUE);
 
-        if (g_list_length (selection) == 0 && NAUTILUS_IS_FILES_VIEW (slot->details->content_view)) {
+        if (g_list_length (selection) == 0 && NAUTILUS_IS_FILES_VIEW (priv->content_view)) {
                 /* If there is no selection, queue a scroll to the same icon that
                  * is currently visible */
-                slot->details->pending_scroll_to = nautilus_files_view_get_first_visible_file 
(NAUTILUS_FILES_VIEW (slot->details->content_view));
+                priv->pending_scroll_to = nautilus_files_view_get_first_visible_file (NAUTILUS_FILES_VIEW 
(priv->content_view));
         }
 
-       slot->details->location_change_type = NAUTILUS_LOCATION_CHANGE_RELOAD;
+       priv->location_change_type = NAUTILUS_LOCATION_CHANGE_RELOAD;
 
         if (!setup_view (slot, NAUTILUS_VIEW (view))) {
                /* Just load the homedir. */
@@ -1601,7 +1639,7 @@ nautilus_window_back_or_forward (NautilusWindow *window,
        GFile *old_location;
 
        slot = nautilus_window_get_active_slot (window);
-       list = back ? slot->details->back_list : slot->details->forward_list;
+       list = back ? priv->back_list : priv->forward_list;
 
         len = (guint) g_list_length (list);
 
@@ -1658,11 +1696,11 @@ nautilus_window_slot_force_reload (NautilusWindowSlot *slot)
        g_object_ref (location);
        current_pos = NULL;
        selection = NULL;
-        if (slot->details->new_content_view) {
-               selection = nautilus_view_get_selection (slot->details->content_view);
+        if (priv->new_content_view) {
+               selection = nautilus_view_get_selection (priv->content_view);
 
-                if (NAUTILUS_IS_FILES_VIEW (slot->details->new_content_view)) {
-                        current_pos = nautilus_files_view_get_first_visible_file (NAUTILUS_FILES_VIEW 
(slot->details->content_view));
+                if (NAUTILUS_IS_FILES_VIEW (priv->new_content_view)) {
+                        current_pos = nautilus_files_view_get_first_visible_file (NAUTILUS_FILES_VIEW 
(priv->content_view));
                 }
        }
        begin_location_change
@@ -1682,11 +1720,11 @@ nautilus_window_slot_queue_reload (NautilusWindowSlot *slot)
                return;
        }
 
-       if (slot->details->pending_location != NULL
-           || slot->details->content_view == NULL
-           || nautilus_view_is_loading (slot->details->content_view)) {
+       if (priv->pending_location != NULL
+           || priv->content_view == NULL
+           || nautilus_view_is_loading (priv->content_view)) {
                /* there is a reload in flight */
-               slot->details->needs_reload = TRUE;
+               priv->needs_reload = TRUE;
                return;
        }
 
@@ -1698,8 +1736,8 @@ nautilus_window_slot_clear_forward_list (NautilusWindowSlot *slot)
 {
        g_assert (NAUTILUS_IS_WINDOW_SLOT (slot));
 
-       g_list_free_full (slot->details->forward_list, g_object_unref);
-       slot->details->forward_list = NULL;
+       g_list_free_full (priv->forward_list, g_object_unref);
+       priv->forward_list = NULL;
 }
 
 static void
@@ -1707,8 +1745,8 @@ nautilus_window_slot_clear_back_list (NautilusWindowSlot *slot)
 {
        g_assert (NAUTILUS_IS_WINDOW_SLOT (slot));
 
-       g_list_free_full (slot->details->back_list, g_object_unref);
-       slot->details->back_list = NULL;
+       g_list_free_full (priv->back_list, g_object_unref);
+       priv->back_list = NULL;
 }
 
 static void
@@ -1719,11 +1757,11 @@ nautilus_window_slot_update_bookmark (NautilusWindowSlot *slot, NautilusFile *fi
 
        new_location = nautilus_file_get_location (file);
 
-       if (slot->details->current_location_bookmark == NULL) {
+       if (priv->current_location_bookmark == NULL) {
                recreate = TRUE;
        } else {
                GFile *bookmark_location;
-               bookmark_location = nautilus_bookmark_get_location (slot->details->current_location_bookmark);
+               bookmark_location = nautilus_bookmark_get_location (priv->current_location_bookmark);
                recreate = !g_file_equal (bookmark_location, new_location);
                g_object_unref (bookmark_location);
         }
@@ -1732,11 +1770,11 @@ nautilus_window_slot_update_bookmark (NautilusWindowSlot *slot, NautilusFile *fi
                char *display_name = NULL;
 
                /* We've changed locations, must recreate bookmark for current location. */
-               g_clear_object (&slot->details->last_location_bookmark);
-               slot->details->last_location_bookmark = slot->details->current_location_bookmark;
+               g_clear_object (&priv->last_location_bookmark);
+               priv->last_location_bookmark = priv->current_location_bookmark;
 
                display_name = nautilus_file_get_display_name (file);
-               slot->details->current_location_bookmark = nautilus_bookmark_new (new_location, display_name);
+               priv->current_location_bookmark = nautilus_bookmark_new (new_location, display_name);
                g_free (display_name);
         }
 
@@ -1767,7 +1805,7 @@ check_bookmark_location_matches (NautilusBookmark *bookmark, GFile *location)
 static void
 check_last_bookmark_location_matches_slot (NautilusWindowSlot *slot)
 {
-       check_bookmark_location_matches (slot->details->last_location_bookmark,
+       check_bookmark_location_matches (priv->last_location_bookmark,
                                         nautilus_window_slot_get_location (slot));
 }
 
@@ -1781,14 +1819,14 @@ handle_go_direction (NautilusWindowSlot *slot,
        NautilusBookmark *bookmark;
        gint i;
 
-       list_ptr = (forward) ? (&slot->details->forward_list) : (&slot->details->back_list);
-       other_list_ptr = (forward) ? (&slot->details->back_list) : (&slot->details->forward_list);
+       list_ptr = (forward) ? (&priv->forward_list) : (&priv->back_list);
+       other_list_ptr = (forward) ? (&priv->back_list) : (&priv->forward_list);
        list = *list_ptr;
        other_list = *other_list_ptr;
 
        /* Move items from the list to the other list. */
-       g_assert (g_list_length (list) > slot->details->location_change_distance);
-       check_bookmark_location_matches (g_list_nth_data (list, slot->details->location_change_distance),
+       g_assert (g_list_length (list) > priv->location_change_distance);
+       check_bookmark_location_matches (g_list_nth_data (list, priv->location_change_distance),
                                         location);
        g_assert (nautilus_window_slot_get_location (slot) != NULL);
 
@@ -1796,11 +1834,11 @@ handle_go_direction (NautilusWindowSlot *slot,
        check_last_bookmark_location_matches_slot (slot);
 
        /* Use the first bookmark in the history list rather than creating a new one. */
-       other_list = g_list_prepend (other_list, slot->details->last_location_bookmark);
+       other_list = g_list_prepend (other_list, priv->last_location_bookmark);
        g_object_ref (other_list->data);
 
        /* Move extra links from the list to the other list */
-       for (i = 0; i < slot->details->location_change_distance; ++i) {
+       for (i = 0; i < priv->location_change_distance; ++i) {
                bookmark = NAUTILUS_BOOKMARK (list->data);
                list = g_list_remove (list, bookmark);
                other_list = g_list_prepend (other_list, bookmark);
@@ -1835,9 +1873,9 @@ handle_go_elsewhere (NautilusWindowSlot *slot,
                        /* Store bookmark for current location in back list, unless there is no current 
location */
                        check_last_bookmark_location_matches_slot (slot);
                        /* Use the first bookmark in the history list rather than creating a new one. */
-                       slot->details->back_list = g_list_prepend (slot->details->back_list,
-                                                         slot->details->last_location_bookmark);
-                       g_object_ref (slot->details->back_list->data);
+                       priv->back_list = g_list_prepend (priv->back_list,
+                                                         priv->last_location_bookmark);
+                       g_object_ref (priv->back_list->data);
                }
        }
 }
@@ -1902,7 +1940,7 @@ found_content_type_cb (const char **x_content_types,
                nautilus_window_slot_show_x_content_bar (slot, data->mount, (const char* const *) 
x_content_types);
        }
 
-       slot->details->find_mount_cancellable = NULL;
+       priv->find_mount_cancellable = NULL;
 
  out:
        g_object_unref (data->mount);
@@ -1934,7 +1972,7 @@ found_mount_cb (GObject *source_object,
                return;
        }
 
-       data->slot->details->find_mount_cancellable = NULL;
+       data->priv->find_mount_cancellable = NULL;
 
  out:
        g_object_unref (data->cancellable);
@@ -1998,20 +2036,20 @@ nautilus_window_slot_update_for_new_location (NautilusWindowSlot *slot)
         GFile *new_location;
         NautilusFile *file;
 
-       new_location = slot->details->pending_location;
-       slot->details->pending_location = NULL;
+       new_location = priv->pending_location;
+       priv->pending_location = NULL;
 
        file = nautilus_file_get (new_location);
        nautilus_window_slot_update_bookmark (slot, file);
 
-       update_history (slot, slot->details->location_change_type, new_location);
+       update_history (slot, priv->location_change_type, new_location);
 
         /* Create a NautilusFile for this location, so we can catch it
          * if it goes away.
          */
        nautilus_window_slot_set_viewed_file (slot, file);
-       slot->details->viewed_file_seen = !nautilus_file_is_not_yet_confirmed (file);
-       slot->details->viewed_file_in_trash = nautilus_file_is_in_trash (file);
+       priv->viewed_file_seen = !nautilus_file_is_not_yet_confirmed (file);
+       priv->viewed_file_in_trash = nautilus_file_is_in_trash (file);
         nautilus_file_unref (file);
 
        nautilus_window_slot_set_location (slot, new_location);
@@ -2024,13 +2062,13 @@ static void
 view_started_loading (NautilusWindowSlot *slot,
                       NautilusView       *view)
 {
-        if (view == slot->details->content_view) {
+        if (view == priv->content_view) {
                 nautilus_window_slot_set_allow_stop (slot, TRUE);
         }
 
-        gtk_widget_grab_focus (GTK_WIDGET (slot->details->window));
+        gtk_widget_grab_focus (GTK_WIDGET (priv->window));
 
-        gtk_widget_show (GTK_WIDGET (slot->details->window));
+        gtk_widget_show (GTK_WIDGET (priv->window));
 
         nautilus_window_slot_set_loading (slot, TRUE);
 }
@@ -2039,17 +2077,17 @@ static void
 view_ended_loading (NautilusWindowSlot *slot,
                     NautilusView       *view)
 {
-        if (view == slot->details->content_view) {
-                if (NAUTILUS_IS_FILES_VIEW (view) && slot->details->pending_scroll_to != NULL) {
-                        nautilus_files_view_scroll_to_file (NAUTILUS_FILES_VIEW 
(slot->details->content_view), slot->details->pending_scroll_to);
+        if (view == priv->content_view) {
+                if (NAUTILUS_IS_FILES_VIEW (view) && priv->pending_scroll_to != NULL) {
+                        nautilus_files_view_scroll_to_file (NAUTILUS_FILES_VIEW (priv->content_view), 
priv->pending_scroll_to);
                 }
 
                 end_location_change (slot);
         }
 
-        if (slot->details->needs_reload) {
+        if (priv->needs_reload) {
                 nautilus_window_slot_queue_reload (slot);
-                slot->details->needs_reload = FALSE;
+                priv->needs_reload = FALSE;
         }
 
         nautilus_window_slot_set_allow_stop (slot, FALSE);
@@ -2116,9 +2154,9 @@ nautilus_window_slot_setup_extra_location_widgets (NautilusWindowSlot *slot)
        }
 
        /* need the mount to determine if we should put up the x-content cluebar */
-       if (slot->details->find_mount_cancellable != NULL) {
-               g_cancellable_cancel (slot->details->find_mount_cancellable);
-               slot->details->find_mount_cancellable = NULL;
+       if (priv->find_mount_cancellable != NULL) {
+               g_cancellable_cancel (priv->find_mount_cancellable);
+               priv->find_mount_cancellable = NULL;
        }
 
        data = g_new (FindMountData, 1);
@@ -2126,7 +2164,7 @@ nautilus_window_slot_setup_extra_location_widgets (NautilusWindowSlot *slot)
        data->cancellable = g_cancellable_new ();
        data->mount = NULL;
 
-       slot->details->find_mount_cancellable = data->cancellable;
+       priv->find_mount_cancellable = data->cancellable;
        g_file_find_enclosing_mount_async (location,
                                           G_PRIORITY_DEFAULT,
                                           data->cancellable,
@@ -2141,8 +2179,8 @@ nautilus_window_slot_setup_extra_location_widgets (NautilusWindowSlot *slot)
 static void
 nautilus_window_slot_connect_new_content_view (NautilusWindowSlot *slot)
 {
-        if (slot->details->new_content_view) {
-                g_signal_connect (slot->details->new_content_view,
+        if (priv->new_content_view) {
+                g_signal_connect (priv->new_content_view,
                                   "notify::is-loading",
                                   G_CALLBACK (view_is_loading_changed_cb),
                                   slot);
@@ -2152,9 +2190,9 @@ nautilus_window_slot_connect_new_content_view (NautilusWindowSlot *slot)
 static void
 nautilus_window_slot_disconnect_content_view (NautilusWindowSlot *slot)
 {
-        if (slot->details->new_content_view && NAUTILUS_IS_FILES_VIEW (slot->details->new_content_view)) {
+        if (priv->new_content_view && NAUTILUS_IS_FILES_VIEW (priv->new_content_view)) {
                /* disconnect old view */
-                g_signal_handlers_disconnect_by_func (slot->details->content_view,
+                g_signal_handlers_disconnect_by_func (priv->content_view,
                                                       G_CALLBACK (view_is_loading_changed_cb),
                                                       slot);
        }
@@ -2166,25 +2204,25 @@ nautilus_window_slot_switch_new_content_view (NautilusWindowSlot *slot)
        GtkWidget *widget;
         gboolean reusing_view;
 
-        reusing_view = slot->details->new_content_view &&
-                       gtk_widget_get_parent (GTK_WIDGET (slot->details->new_content_view)) != NULL;
+        reusing_view = priv->new_content_view &&
+                       gtk_widget_get_parent (GTK_WIDGET (priv->new_content_view)) != NULL;
         /* We are either reusing the view, so new_content_view and content_view
          * are the same, or the new_content_view is invalid */
-        if (slot->details->new_content_view == NULL || reusing_view)
+        if (priv->new_content_view == NULL || reusing_view)
                 goto done;
 
-       if (slot->details->content_view != NULL) {
-               widget = GTK_WIDGET (slot->details->content_view);
+       if (priv->content_view != NULL) {
+               widget = GTK_WIDGET (priv->content_view);
                gtk_widget_destroy (widget);
-               g_object_unref (slot->details->content_view);
-               slot->details->content_view = NULL;
+               g_object_unref (priv->content_view);
+               priv->content_view = NULL;
        }
 
-       if (slot->details->new_content_view != NULL) {
-               slot->details->content_view = slot->details->new_content_view;
-               slot->details->new_content_view = NULL;
+       if (priv->new_content_view != NULL) {
+               priv->content_view = priv->new_content_view;
+               priv->new_content_view = NULL;
 
-               widget = GTK_WIDGET (slot->details->content_view);
+               widget = GTK_WIDGET (priv->content_view);
                 gtk_container_add (GTK_CONTAINER (slot), widget);
                 gtk_widget_set_vexpand (widget, TRUE);
                gtk_widget_show (widget);
@@ -2196,7 +2234,7 @@ nautilus_window_slot_switch_new_content_view (NautilusWindowSlot *slot)
 done:
         /* Clean up, so we don't confuse having a new_content_view available or
          * just that we didn't care about it here */
-        slot->details->new_content_view = NULL;
+        priv->new_content_view = NULL;
 
 }
 
@@ -2212,7 +2250,7 @@ change_view (NautilusWindowSlot *slot)
        nautilus_window_slot_remove_extra_location_widgets (slot);
        nautilus_window_slot_switch_new_content_view (slot);
 
-       if (slot->details->pending_location != NULL) {
+       if (priv->pending_location != NULL) {
                /* Tell the window we are finished. */
                nautilus_window_slot_update_for_new_location (slot);
        }
@@ -2236,39 +2274,39 @@ nautilus_window_slot_dispose (GObject *object)
 
        nautilus_window_slot_remove_extra_location_widgets (slot);
 
-       if (slot->details->content_view) {
-               widget = GTK_WIDGET (slot->details->content_view);
+       if (priv->content_view) {
+               widget = GTK_WIDGET (priv->content_view);
                gtk_widget_destroy (widget);
-               g_object_unref (slot->details->content_view);
-               slot->details->content_view = NULL;
+               g_object_unref (priv->content_view);
+               priv->content_view = NULL;
        }
 
-       if (slot->details->new_content_view) {
-               widget = GTK_WIDGET (slot->details->new_content_view);
+       if (priv->new_content_view) {
+               widget = GTK_WIDGET (priv->new_content_view);
                gtk_widget_destroy (widget);
-               g_object_unref (slot->details->new_content_view);
-               slot->details->new_content_view = NULL;
+               g_object_unref (priv->new_content_view);
+               priv->new_content_view = NULL;
        }
 
        nautilus_window_slot_set_viewed_file (slot, NULL);
 
-        g_clear_object (&slot->details->location);
+        g_clear_object (&priv->location);
 
-       nautilus_file_list_free (slot->details->pending_selection);
-       slot->details->pending_selection = NULL;
+       nautilus_file_list_free (priv->pending_selection);
+       priv->pending_selection = NULL;
 
-       g_clear_object (&slot->details->current_location_bookmark);
-       g_clear_object (&slot->details->last_location_bookmark);
+       g_clear_object (&priv->current_location_bookmark);
+       g_clear_object (&priv->last_location_bookmark);
 
-       if (slot->details->find_mount_cancellable != NULL) {
-               g_cancellable_cancel (slot->details->find_mount_cancellable);
-               slot->details->find_mount_cancellable = NULL;
+       if (priv->find_mount_cancellable != NULL) {
+               g_cancellable_cancel (priv->find_mount_cancellable);
+               priv->find_mount_cancellable = NULL;
        }
 
-       slot->details->window = NULL;
+       priv->window = NULL;
 
-       g_free (slot->details->title);
-       slot->details->title = NULL;
+       g_free (priv->title);
+       priv->title = NULL;
 
        free_location_change (slot);
 
@@ -2285,11 +2323,11 @@ nautilus_window_slot_grab_focus (GtkWidget *widget)
         GTK_WIDGET_CLASS (nautilus_window_slot_parent_class)->grab_focus (widget);
 
         if (nautilus_window_slot_get_search_visible (slot)) {
-                gtk_widget_grab_focus (GTK_WIDGET (slot->details->query_editor));
-        } else if (slot->details->content_view) {
-                gtk_widget_grab_focus (GTK_WIDGET (slot->details->content_view));
-        } else if (slot->details->new_content_view) {
-                gtk_widget_grab_focus (GTK_WIDGET (slot->details->new_content_view));
+                gtk_widget_grab_focus (GTK_WIDGET (priv->query_editor));
+        } else if (priv->content_view) {
+                gtk_widget_grab_focus (GTK_WIDGET (priv->content_view));
+        } else if (priv->new_content_view) {
+                gtk_widget_grab_focus (GTK_WIDGET (priv->new_content_view));
         }
 }
 
@@ -2377,13 +2415,13 @@ nautilus_window_slot_get_location (NautilusWindowSlot *slot)
 {
        g_assert (slot != NULL);
 
-       return slot->details->location;
+       return priv->location;
 }
 
 const gchar *
 nautilus_window_slot_get_title (NautilusWindowSlot *slot)
 {
-       return slot->details->title;
+       return priv->title;
 }
 
 char *
@@ -2391,8 +2429,8 @@ nautilus_window_slot_get_location_uri (NautilusWindowSlot *slot)
 {
        g_assert (NAUTILUS_IS_WINDOW_SLOT (slot));
 
-       if (slot->details->location) {
-               return g_file_get_uri (slot->details->location);
+       if (priv->location) {
+               return g_file_get_uri (priv->location);
        }
        return NULL;
 }
@@ -2401,7 +2439,7 @@ NautilusWindow *
 nautilus_window_slot_get_window (NautilusWindowSlot *slot)
 {
        g_assert (NAUTILUS_IS_WINDOW_SLOT (slot));
-       return slot->details->window;
+       return priv->window;
 }
 
 void
@@ -2411,8 +2449,8 @@ nautilus_window_slot_set_window (NautilusWindowSlot *slot,
        g_assert (NAUTILUS_IS_WINDOW_SLOT (slot));
        g_assert (NAUTILUS_IS_WINDOW (window));
 
-       if (slot->details->window != window) {
-               slot->details->window = window;
+       if (priv->window != window) {
+               priv->window = window;
                g_object_notify_by_pspec (G_OBJECT (slot), properties[PROP_WINDOW]);
        }
 }
@@ -2431,18 +2469,18 @@ nautilus_window_slot_update_title (NautilusWindowSlot *slot)
        char *title;
        gboolean do_sync = FALSE;
 
-       title = nautilus_compute_title_for_location (slot->details->location);
+       title = nautilus_compute_title_for_location (priv->location);
        window = nautilus_window_slot_get_window (slot);
 
-       if (g_strcmp0 (title, slot->details->title) != 0) {
+       if (g_strcmp0 (title, priv->title) != 0) {
                do_sync = TRUE;
 
-               g_free (slot->details->title);
-               slot->details->title = title;
+               g_free (priv->title);
+               priv->title = title;
                title = NULL;
        }
 
-       if (strlen (slot->details->title) > 0) {
+       if (strlen (priv->title) > 0) {
                do_sync = TRUE;
        }
 
@@ -2458,7 +2496,7 @@ nautilus_window_slot_update_title (NautilusWindowSlot *slot)
 gboolean
 nautilus_window_slot_get_allow_stop (NautilusWindowSlot *slot)
 {
-       return slot->details->allow_stop;
+       return priv->allow_stop;
 }
 
 void
@@ -2469,7 +2507,7 @@ nautilus_window_slot_set_allow_stop (NautilusWindowSlot *slot,
 
        g_assert (NAUTILUS_IS_WINDOW_SLOT (slot));
 
-       slot->details->allow_stop = allow;
+       priv->allow_stop = allow;
 
        window = nautilus_window_slot_get_window (slot);
        nautilus_window_sync_allow_stop (window, slot);
@@ -2484,24 +2522,24 @@ nautilus_window_slot_stop_loading (NautilusWindowSlot *slot)
 
         location = nautilus_window_slot_get_location (slot);
 
-        directory = nautilus_directory_get (slot->details->location);
+        directory = nautilus_directory_get (priv->location);
 
-        if (NAUTILUS_IS_FILES_VIEW (slot->details->content_view)) {
-                nautilus_files_view_stop_loading (NAUTILUS_FILES_VIEW (slot->details->content_view));
+        if (NAUTILUS_IS_FILES_VIEW (priv->content_view)) {
+                nautilus_files_view_stop_loading (NAUTILUS_FILES_VIEW (priv->content_view));
         }
 
         nautilus_directory_unref (directory);
 
-        if (slot->details->pending_location != NULL &&
+        if (priv->pending_location != NULL &&
             location != NULL &&
-            slot->details->content_view != NULL &&
-            NAUTILUS_IS_FILES_VIEW (slot->details->content_view)) {
+            priv->content_view != NULL &&
+            NAUTILUS_IS_FILES_VIEW (priv->content_view)) {
                 /* No need to tell the new view - either it is the
                  * same as the old view, in which case it will already
                  * be told, or it is the very pending change we wish
                  * to cancel.
                  */
-                selection = nautilus_view_get_selection (slot->details->content_view);
+                selection = nautilus_view_get_selection (priv->content_view);
                 load_new_location (slot,
                                    location,
                                    selection,
@@ -2512,19 +2550,19 @@ nautilus_window_slot_stop_loading (NautilusWindowSlot *slot)
 
         end_location_change (slot);
 
-        if (slot->details->new_content_view) {
-                g_object_unref (slot->details->new_content_view);
-                slot->details->new_content_view = NULL;
+        if (priv->new_content_view) {
+                g_object_unref (priv->new_content_view);
+                priv->new_content_view = NULL;
         }
 }
 
 NautilusView*
 nautilus_window_slot_get_current_view (NautilusWindowSlot *slot)
 {
-       if (slot->details->content_view != NULL) {
-               return slot->details->content_view;
-       } else if (slot->details->new_content_view) {
-               return slot->details->new_content_view;
+       if (priv->content_view != NULL) {
+               return priv->content_view;
+       } else if (priv->new_content_view) {
+               return priv->new_content_view;
        }
 
        return NULL;
@@ -2533,19 +2571,19 @@ nautilus_window_slot_get_current_view (NautilusWindowSlot *slot)
 NautilusBookmark *
 nautilus_window_slot_get_bookmark (NautilusWindowSlot *slot)
 {
-       return slot->details->current_location_bookmark;
+       return priv->current_location_bookmark;
 }
 
 GList *
 nautilus_window_slot_get_back_history (NautilusWindowSlot *slot)
 {
-       return slot->details->back_list;
+       return priv->back_list;
 }
 
 GList *
 nautilus_window_slot_get_forward_history (NautilusWindowSlot *slot)
 {
-       return slot->details->forward_list;
+       return priv->forward_list;
 }
 
 NautilusWindowSlot *
@@ -2585,7 +2623,7 @@ nautilus_window_slot_get_active (NautilusWindowSlot *slot)
 {
         g_return_val_if_fail (NAUTILUS_IS_WINDOW_SLOT (slot), FALSE);
 
-        return slot->details->active;
+        return priv->active;
 }
 
 void
@@ -2594,8 +2632,8 @@ nautilus_window_slot_set_active (NautilusWindowSlot *slot,
 {
         g_return_if_fail (NAUTILUS_IS_WINDOW_SLOT (slot));
 
-        if (slot->details->active != active) {
-                slot->details->active = active;
+        if (priv->active != active) {
+                priv->active = active;
 
                 if (active) {
                         g_signal_emit (slot, signals[ACTIVE], 0);
@@ -2613,7 +2651,7 @@ nautilus_window_slot_set_loading (NautilusWindowSlot *slot,
 {
         g_return_if_fail (NAUTILUS_IS_WINDOW_SLOT (slot));
 
-        slot->details->loading = loading;
+        priv->loading = loading;
 
         g_object_notify_by_pspec (G_OBJECT (slot), properties[PROP_LOADING]);
 }
@@ -2623,5 +2661,5 @@ nautilus_window_slot_get_loading (NautilusWindowSlot *slot)
 {
         g_return_val_if_fail (NAUTILUS_IS_WINDOW_SLOT (slot), FALSE);
 
-        return slot->details->loading;
+        return priv->loading;
 }
diff --git a/src/nautilus-window-slot.h b/src/nautilus-window-slot.h
index 4c7f564..d8ccb77 100644
--- a/src/nautilus-window-slot.h
+++ b/src/nautilus-window-slot.h
@@ -24,22 +24,10 @@
 #define NAUTILUS_WINDOW_SLOT_H
 
 #include "nautilus-query-editor.h"
-
-typedef struct NautilusWindowSlot NautilusWindowSlot;
-typedef struct NautilusWindowSlotClass NautilusWindowSlotClass;
-typedef struct NautilusWindowSlotDetails NautilusWindowSlotDetails;
-
 #include "nautilus-files-view.h"
 #include "nautilus-view.h"
 #include "nautilus-window.h"
 
-#define NAUTILUS_TYPE_WINDOW_SLOT       (nautilus_window_slot_get_type())
-#define NAUTILUS_WINDOW_SLOT_CLASS(k)     (G_TYPE_CHECK_CLASS_CAST((k), NAUTILUS_TYPE_WINDOW_SLOT, 
NautilusWindowSlotClass))
-#define NAUTILUS_WINDOW_SLOT(obj)       (G_TYPE_CHECK_INSTANCE_CAST ((obj), NAUTILUS_TYPE_WINDOW_SLOT, 
NautilusWindowSlot))
-#define NAUTILUS_IS_WINDOW_SLOT(obj)      (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NAUTILUS_TYPE_WINDOW_SLOT))
-#define NAUTILUS_IS_WINDOW_SLOT_CLASS(k)  (G_TYPE_CHECK_CLASS_TYPE ((k), NAUTILUS_TYPE_WINDOW_SLOT))
-#define NAUTILUS_WINDOW_SLOT_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), NAUTILUS_TYPE_WINDOW_SLOT, 
NautilusWindowSlotClass))
-
 typedef enum {
        NAUTILUS_LOCATION_CHANGE_STANDARD,
        NAUTILUS_LOCATION_CHANGE_BACK,
@@ -47,25 +35,24 @@ typedef enum {
        NAUTILUS_LOCATION_CHANGE_RELOAD
 } NautilusLocationChangeType;
 
+#define NAUTILUS_TYPE_WINDOW_SLOT (nautilus_window_slot_get_type ())
+G_DECLARE_DERIVABLE_TYPE (NautilusWindowSlot, nautilus_window_slot, NAUTILUS, WINDOW_SLOT, GtkBox)
+
 struct NautilusWindowSlotClass {
        GtkBoxClass parent_class;
 
        /* wrapped NautilusWindowInfo signals, for overloading */
        void (* active)   (NautilusWindowSlot *slot);
        void (* inactive) (NautilusWindowSlot *slot);
-};
-
-/* Each NautilusWindowSlot corresponds to a location in the window
- * for displaying a NautilusFilesView, i.e. a tab.
- */
-struct NautilusWindowSlot {
-       GtkBox parent;
 
-       NautilusWindowSlotDetails *details;
+        /* Use this in case the subclassed slot has some special views differents
+         * that the ones supported here. You can return your nautilus view
+         * subclass in this function.
+         */
+        NautilusView*  (* get_view_for_location) (NautilusWindowSlot *slot,
+                                                  GFile              *location);
 };
 
-GType   nautilus_window_slot_get_type (void);
-
 NautilusWindowSlot * nautilus_window_slot_new              (NautilusWindow     *window);
 
 NautilusWindow * nautilus_window_slot_get_window           (NautilusWindowSlot *slot);


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