summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Neumair <cneumair@gnome.org>2008-05-31 10:55:48 +0000
committerChristian Neumair <cneumair@src.gnome.org>2008-05-31 10:55:48 +0000
commita3bf2c4c0bcea5a0d621d4fa8fbc037b664fabf6 (patch)
tree1fdfa6c50e80ce8fdfb64f782a9aa78fcfe5ec6c
parent9631de7c708aca1cb202e317072330b3aae4a569 (diff)
downloadnautilus-a3bf2c4c0bcea5a0d621d4fa8fbc037b664fabf6.tar.gz
If no previously active slot remains, use an inactive slot.
2008-05-31 Christian Neumair <cneumair@gnome.org> * src/nautilus-window.c (get_first_inactive_slot), (nautilus_window_slot_close): If no previously active slot remains, use an inactive slot. svn path=/branches/multiview/; revision=14216
-rw-r--r--ChangeLog6
-rw-r--r--src/nautilus-window.c25
2 files changed, 29 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index dd2e85967..5d9adf430 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,11 @@
2008-05-31 Christian Neumair <cneumair@gnome.org>
+ * src/nautilus-window.c (get_first_inactive_slot),
+ (nautilus_window_slot_close):
+ If no previously active slot remains, use an inactive slot.
+
+2008-05-31 Christian Neumair <cneumair@gnome.org>
+
* libnautilus-private/nautilus-mime-actions.c
(confirm_multiple_windows), (activate_files),
(activation_mountable_mounted), (nautilus_mime_activate_files),
diff --git a/src/nautilus-window.c b/src/nautilus-window.c
index 0fcc945dc..28c617f20 100644
--- a/src/nautilus-window.c
+++ b/src/nautilus-window.c
@@ -841,18 +841,39 @@ get_last_active_slot (NautilusWindow *window)
return NULL;
}
+static inline NautilusWindowSlot *
+get_first_inactive_slot (NautilusWindow *window)
+{
+ GList *l;
+ NautilusWindowSlot *slot;
+
+ for (l = window->details->slots; l != NULL; l = l->next) {
+ slot = NAUTILUS_WINDOW_SLOT (l->data);
+ if (slot != window->details->active_slot) {
+ return slot;
+ }
+ }
+
+ return NULL;
+}
+
void
nautilus_window_slot_close (NautilusWindowSlot *slot)
{
NautilusWindow *window;
+ NautilusWindowSlot *next_slot;
window = slot->window;
if (window != NULL) {
window->details->active_slots = g_list_remove (window->details->active_slots, slot);
if (window->details->active_slot == slot) {
- nautilus_window_set_active_slot (window,
- get_last_active_slot (window));
+ next_slot = get_last_active_slot (window);
+ if (next_slot == NULL) {
+ next_slot = get_first_inactive_slot (window);
+ }
+
+ nautilus_window_set_active_slot (window, next_slot);
}
nautilus_window_close_slot (window, slot);