[nautilus] Add nautilus_window_info_get_extra_slot



commit 6a71f0f996e7c946a10e263951a906dd9795c4dc
Author: Alexander Larsson <alexl redhat com>
Date:   Wed Dec 16 10:09:43 2009 +0100

    Add nautilus_window_info_get_extra_slot

 libnautilus-private/nautilus-window-info.c |    8 +++++++
 libnautilus-private/nautilus-window-info.h |    3 ++
 src/nautilus-window-private.h              |    1 +
 src/nautilus-window.c                      |   31 ++++++++++++++++++++++++++++
 4 files changed, 43 insertions(+), 0 deletions(-)
---
diff --git a/libnautilus-private/nautilus-window-info.c b/libnautilus-private/nautilus-window-info.c
index 60da170..23cb812 100644
--- a/libnautilus-private/nautilus-window-info.c
+++ b/libnautilus-private/nautilus-window-info.c
@@ -286,6 +286,14 @@ nautilus_window_info_get_active_slot (NautilusWindowInfo *window)
 	return (* NAUTILUS_WINDOW_INFO_GET_IFACE (window)->get_active_slot) (window);
 }
 
+NautilusWindowSlotInfo *
+nautilus_window_info_get_extra_slot (NautilusWindowInfo *window)
+{
+	g_return_val_if_fail (NAUTILUS_IS_WINDOW_INFO (window), NULL);
+
+	return (* NAUTILUS_WINDOW_INFO_GET_IFACE (window)->get_extra_slot) (window);
+}
+
 struct FMDirectoryView *
 nautilus_window_info_get_directory_view_of_next_pane (NautilusWindowInfo *window)
 {
diff --git a/libnautilus-private/nautilus-window-info.h b/libnautilus-private/nautilus-window-info.h
index 3c2bdec..d3d347c 100644
--- a/libnautilus-private/nautilus-window-info.h
+++ b/libnautilus-private/nautilus-window-info.h
@@ -137,11 +137,13 @@ struct _NautilusWindowInfoIface
 				       NautilusWindowShowHiddenFilesMode mode);
 
 	NautilusWindowSlotInfo * (* get_active_slot) (NautilusWindowInfo *window);
+	NautilusWindowSlotInfo * (* get_extra_slot)  (NautilusWindowInfo *window);
 
 	void   (* view_visible)        (NautilusWindowInfo *window,
 					NautilusView *view);
 	void   (* close_window)       (NautilusWindowInfo *window);
 	GtkUIManager *     (* get_ui_manager)   (NautilusWindowInfo *window);
+
 	/* return TRUE if other pane is writable (files can be moved/copied
 	 * there), FALSE if it is not writable or no other pane exists */
 	gboolean (* next_pane_is_writable) (NautilusWindowInfo *window);
@@ -159,6 +161,7 @@ void                              nautilus_window_info_report_view_failed
 										 NautilusView                      *view);
 void                              nautilus_window_info_report_selection_changed (NautilusWindowInfo                *window);
 NautilusWindowSlotInfo *          nautilus_window_info_get_active_slot          (NautilusWindowInfo                *window);
+NautilusWindowSlotInfo *          nautilus_window_info_get_extra_slot           (NautilusWindowInfo                *window);
 void                              nautilus_window_info_view_visible             (NautilusWindowInfo                *window,
 										 NautilusView                      *view);
 void                              nautilus_window_info_close                    (NautilusWindowInfo                *window);
diff --git a/src/nautilus-window-private.h b/src/nautilus-window-private.h
index a3f3f43..c4334b1 100644
--- a/src/nautilus-window-private.h
+++ b/src/nautilus-window-private.h
@@ -190,6 +190,7 @@ NautilusWindowSlot *nautilus_window_get_slot_for_view                    (Nautil
 
 GList *              nautilus_window_get_slots                           (NautilusWindow    *window);
 NautilusWindowSlot * nautilus_window_get_active_slot                     (NautilusWindow    *window);
+NautilusWindowSlot * nautilus_window_get_extra_slot                      (NautilusWindow    *window);
 void                 nautilus_window_set_active_slot                     (NautilusWindow    *window,
 									  NautilusWindowSlot *slot);
 void                 nautilus_window_set_active_pane                     (NautilusWindow *window,
diff --git a/src/nautilus-window.c b/src/nautilus-window.c
index 3bdc516..91ed61e 100644
--- a/src/nautilus-window.c
+++ b/src/nautilus-window.c
@@ -1933,6 +1933,36 @@ nautilus_window_get_active_slot (NautilusWindow *window)
 	return window->details->active_pane->active_slot;
 }
 
+NautilusWindowSlot *
+nautilus_window_get_extra_slot (NautilusWindow *window)
+{
+	NautilusWindowPane *extra_pane;
+	GList *node;
+
+	g_assert (NAUTILUS_IS_WINDOW (window));
+
+
+	/* return NULL if there is only one pane */
+	if (window->details->panes == NULL ||
+	    window->details->panes->next == NULL) {
+		return NULL;
+	}
+
+	/* get next pane in the (wrapped around) list */
+	node = g_list_find (window->details->panes,
+			    window->details->active_pane);
+	g_return_val_if_fail (node, FALSE);
+
+	if (node->next) {
+		extra_pane = node->next->data;
+	}
+	else {
+		extra_pane =  window->details->panes->data;
+	}
+
+	return extra_pane->active_slot;
+}
+
 static FMDirectoryView *
 nautilus_window_get_directory_view_of_next_pane (NautilusWindow *window)
 {
@@ -1987,6 +2017,7 @@ nautilus_window_info_iface_init (NautilusWindowInfoIface *iface)
 	iface->get_hidden_files_mode = nautilus_window_get_hidden_files_mode;
 	iface->set_hidden_files_mode = nautilus_window_set_hidden_files_mode;
 	iface->get_active_slot = nautilus_window_get_active_slot;
+	iface->get_extra_slot = nautilus_window_get_extra_slot;
 	iface->get_directory_view_of_next_pane = nautilus_window_get_directory_view_of_next_pane;
 }
 



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