diff options
-rw-r--r-- | src/nautilus-window-manage-views.c | 42 | ||||
-rw-r--r-- | src/nautilus-window-menus.c | 6 | ||||
-rw-r--r-- | src/nautilus-window-slot.h | 3 | ||||
-rw-r--r-- | src/nautilus-window.c | 46 | ||||
-rw-r--r-- | src/nautilus-window.h | 3 |
5 files changed, 52 insertions, 48 deletions
diff --git a/src/nautilus-window-manage-views.c b/src/nautilus-window-manage-views.c index b4a6fcec2..f22312b89 100644 --- a/src/nautilus-window-manage-views.c +++ b/src/nautilus-window-manage-views.c @@ -633,7 +633,8 @@ nautilus_window_slot_open_location_full (NautilusWindowSlot *slot, } void -nautilus_window_slot_go_home (NautilusWindowSlot *slot, gboolean new_tab) +nautilus_window_slot_go_home (NautilusWindowSlot *slot, + gboolean new_tab) { GFile *home; NautilusWindowOpenFlags flags; @@ -653,6 +654,45 @@ nautilus_window_slot_go_home (NautilusWindowSlot *slot, gboolean new_tab) g_object_unref (home); } +void +nautilus_window_slot_go_up (NautilusWindowSlot *slot, + gboolean close_behind, + gboolean new_tab) +{ + GFile *parent; + GList *selection; + NautilusWindowOpenFlags flags; + + if (slot->location == NULL) { + return; + } + + parent = g_file_get_parent (slot->location); + + if (parent == NULL) { + return; + } + + selection = g_list_prepend (NULL, g_object_ref (slot->location)); + + flags = 0; + if (close_behind) { + flags |= NAUTILUS_WINDOW_OPEN_FLAG_CLOSE_BEHIND; + } + if (new_tab) { + flags |= NAUTILUS_WINDOW_OPEN_FLAG_NEW_TAB; + } + + nautilus_window_slot_open_location (slot, parent, + NAUTILUS_WINDOW_OPEN_ACCORDING_TO_MODE, + flags, + selection); + + g_object_unref (parent); + + g_list_free_full (selection, g_object_unref); +} + static char * nautilus_window_slot_get_view_error_label (NautilusWindowSlot *slot) { diff --git a/src/nautilus-window-menus.c b/src/nautilus-window-menus.c index fc438e2db..cc997defa 100644 --- a/src/nautilus-window-menus.c +++ b/src/nautilus-window-menus.c @@ -536,7 +536,11 @@ static void action_up_callback (GtkAction *action, gpointer user_data) { - nautilus_window_go_up (NAUTILUS_WINDOW (user_data), FALSE, should_open_in_new_tab ()); + NautilusWindow *window = user_data; + NautilusWindowSlot *slot; + + slot = nautilus_window_get_active_slot (window); + nautilus_window_slot_go_up (slot, FALSE, should_open_in_new_tab ()); } static void diff --git a/src/nautilus-window-slot.h b/src/nautilus-window-slot.h index 89d4ad7fa..b090c2bc5 100644 --- a/src/nautilus-window-slot.h +++ b/src/nautilus-window-slot.h @@ -163,6 +163,9 @@ gboolean nautilus_window_slot_content_view_matches_iid (NautilusWindowSlot *slo void nautilus_window_slot_go_home (NautilusWindowSlot *slot, gboolean new_tab); +void nautilus_window_slot_go_up (NautilusWindowSlot *slot, + gboolean close_behind, + gboolean new_tab); void nautilus_window_slot_set_content_view_widget (NautilusWindowSlot *slot, NautilusView *content_view); diff --git a/src/nautilus-window.c b/src/nautilus-window.c index dd0f6c0af..869658775 100644 --- a/src/nautilus-window.c +++ b/src/nautilus-window.c @@ -244,7 +244,9 @@ nautilus_window_go_to_with_selection (NautilusWindow *window, static gboolean nautilus_window_go_up_signal (NautilusWindow *window, gboolean close_behind) { - nautilus_window_go_up (window, close_behind, FALSE); + nautilus_window_slot_go_up (nautilus_window_get_active_slot (window), + close_behind, FALSE); + return TRUE; } @@ -283,48 +285,6 @@ nautilus_window_new_tab (NautilusWindow *window) } } -void -nautilus_window_go_up (NautilusWindow *window, gboolean close_behind, gboolean new_tab) -{ - NautilusWindowSlot *slot; - GFile *parent; - GList *selection; - NautilusWindowOpenFlags flags; - - g_assert (NAUTILUS_IS_WINDOW (window)); - - slot = window->details->active_pane->active_slot; - - if (slot->location == NULL) { - return; - } - - parent = g_file_get_parent (slot->location); - - if (parent == NULL) { - return; - } - - selection = g_list_prepend (NULL, g_object_ref (slot->location)); - - flags = 0; - if (close_behind) { - flags |= NAUTILUS_WINDOW_OPEN_FLAG_CLOSE_BEHIND; - } - if (new_tab) { - flags |= NAUTILUS_WINDOW_OPEN_FLAG_NEW_TAB; - } - - nautilus_window_slot_open_location (slot, parent, - NAUTILUS_WINDOW_OPEN_ACCORDING_TO_MODE, - flags, - selection); - - g_object_unref (parent); - - g_list_free_full (selection, g_object_unref); -} - static void real_set_allow_up (NautilusWindow *window, gboolean allow) diff --git a/src/nautilus-window.h b/src/nautilus-window.h index e0edee7ed..fe3e0e41d 100644 --- a/src/nautilus-window.h +++ b/src/nautilus-window.h @@ -160,9 +160,6 @@ void nautilus_window_go_to_with_selection (NautilusWindow *window GFile *location, GList *new_selection); void nautilus_window_new_tab (NautilusWindow *window); -void nautilus_window_go_up (NautilusWindow *window, - gboolean close_behind, - gboolean new_tab); void nautilus_window_prompt_for_location (NautilusWindow *window, const char *initial); void nautilus_window_display_error (NautilusWindow *window, |