summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCosimo Cecchi <cosimoc@gnome.org>2010-08-31 02:41:32 +0200
committerCosimo Cecchi <cosimoc@gnome.org>2010-09-20 17:04:45 +0200
commit24515b87a91afd32885e07e32e2b4080584673a4 (patch)
treebca83c7f814809d175371c4bdca6798ad3261262
parent42cc7bd181d2f57dbc008bea54a40f02be40ce39 (diff)
downloadnautilus-24515b87a91afd32885e07e32e2b4080584673a4.tar.gz
window: add _full() versions of _go_to and _open() methods
These also have a callback to get the result of the operation.
-rw-r--r--libnautilus-private/nautilus-window-info.h4
-rw-r--r--libnautilus-private/nautilus-window-slot-info.c16
-rw-r--r--libnautilus-private/nautilus-window-slot-info.h15
-rw-r--r--src/nautilus-window-manage-views.c8
-rw-r--r--src/nautilus-window-slot.h11
-rw-r--r--src/nautilus-window.c14
-rw-r--r--src/nautilus-window.h4
7 files changed, 56 insertions, 16 deletions
diff --git a/libnautilus-private/nautilus-window-info.h b/libnautilus-private/nautilus-window-info.h
index 8ae0fa1d3..d798a7711 100644
--- a/libnautilus-private/nautilus-window-info.h
+++ b/libnautilus-private/nautilus-window-info.h
@@ -82,6 +82,10 @@ typedef NautilusWindow NautilusWindowInfo;
typedef struct _NautilusWindowInfoIface NautilusWindowInfoIface;
+typedef void (* NautilusWindowGoToCallback) (NautilusWindow *window,
+ GError *error,
+ gpointer user_data);
+
struct _NautilusWindowInfoIface
{
GTypeInterface g_iface;
diff --git a/libnautilus-private/nautilus-window-slot-info.c b/libnautilus-private/nautilus-window-slot-info.c
index 9adff6cbc..8b2f2f4b9 100644
--- a/libnautilus-private/nautilus-window-slot-info.c
+++ b/libnautilus-private/nautilus-window-slot-info.c
@@ -104,11 +104,13 @@ nautilus_window_slot_info_make_hosting_pane_active (NautilusWindowSlotInfo *slot
}
void
-nautilus_window_slot_info_open_location (NautilusWindowSlotInfo *slot,
- GFile *location,
- NautilusWindowOpenMode mode,
- NautilusWindowOpenFlags flags,
- GList *selection)
+nautilus_window_slot_info_open_location_full (NautilusWindowSlotInfo *slot,
+ GFile *location,
+ NautilusWindowOpenMode mode,
+ NautilusWindowOpenFlags flags,
+ GList *selection,
+ NautilusWindowGoToCallback callback,
+ gpointer user_data)
{
g_assert (NAUTILUS_IS_WINDOW_SLOT_INFO (slot));
@@ -116,7 +118,9 @@ nautilus_window_slot_info_open_location (NautilusWindowSlotInfo *slot,
location,
mode,
flags,
- selection);
+ selection,
+ callback,
+ user_data);
}
char *
diff --git a/libnautilus-private/nautilus-window-slot-info.h b/libnautilus-private/nautilus-window-slot-info.h
index bc4a066fa..5515278d2 100644
--- a/libnautilus-private/nautilus-window-slot-info.h
+++ b/libnautilus-private/nautilus-window-slot-info.h
@@ -72,18 +72,27 @@ struct _NautilusWindowSlotInfoIface
GFile *location,
NautilusWindowOpenMode mode,
NautilusWindowOpenFlags flags,
- GList *selection);
+ GList *selection,
+ NautilusWindowGoToCallback callback,
+ gpointer user_data);
void (* make_hosting_pane_active) (NautilusWindowSlotInfo *slot);
};
GType nautilus_window_slot_info_get_type (void);
NautilusWindowInfo * nautilus_window_slot_info_get_window (NautilusWindowSlotInfo *slot);
-void nautilus_window_slot_info_open_location (NautilusWindowSlotInfo *slot,
+
+#define nautilus_window_slot_info_open_location(slot, location, mode, flags, selection) \
+ nautilus_window_slot_info_open_location_full(slot, location, mode, \
+ flags, selection, NULL, NULL)
+
+void nautilus_window_slot_info_open_location_full (NautilusWindowSlotInfo *slot,
GFile *location,
NautilusWindowOpenMode mode,
NautilusWindowOpenFlags flags,
- GList *selection);
+ GList *selection,
+ NautilusWindowGoToCallback callback,
+ gpointer user_data);
void nautilus_window_slot_info_set_status (NautilusWindowSlotInfo *slot,
const char *status);
void nautilus_window_slot_info_make_hosting_pane_active (NautilusWindowSlotInfo *slot);
diff --git a/src/nautilus-window-manage-views.c b/src/nautilus-window-manage-views.c
index 9d8247232..655ea715b 100644
--- a/src/nautilus-window-manage-views.c
+++ b/src/nautilus-window-manage-views.c
@@ -656,7 +656,7 @@ nautilus_window_slot_open_location (NautilusWindowSlot *slot,
nautilus_window_slot_open_location_full (slot, location,
NAUTILUS_WINDOW_OPEN_ACCORDING_TO_MODE,
- flags, NULL);
+ flags, NULL, NULL, NULL);
}
void
@@ -673,7 +673,7 @@ nautilus_window_slot_open_location_with_selection (NautilusWindowSlot *slot,
}
nautilus_window_slot_open_location_full (slot, location,
NAUTILUS_WINDOW_OPEN_ACCORDING_TO_MODE,
- flags, selection);
+ flags, selection, NULL, NULL);
}
@@ -694,7 +694,7 @@ nautilus_window_slot_go_home (NautilusWindowSlot *slot, gboolean new_tab)
home = g_file_new_for_path (g_get_home_dir ());
nautilus_window_slot_open_location_full (slot, home,
NAUTILUS_WINDOW_OPEN_ACCORDING_TO_MODE,
- flags, NULL);
+ flags, NULL, NULL, NULL);
g_object_unref (home);
}
@@ -2057,7 +2057,7 @@ nautilus_navigation_window_back_or_forward (NautilusNavigationWindow *window,
nautilus_window_slot_open_location_full (slot, location,
NAUTILUS_WINDOW_OPEN_ACCORDING_TO_MODE,
NAUTILUS_WINDOW_OPEN_FLAG_NEW_TAB,
- NULL);
+ NULL, NULL, NULL);
} else {
char *scroll_pos;
diff --git a/src/nautilus-window-slot.h b/src/nautilus-window-slot.h
index 9f95d2026..a7c60fb32 100644
--- a/src/nautilus-window-slot.h
+++ b/src/nautilus-window-slot.h
@@ -136,7 +136,9 @@ void nautilus_window_slot_open_location_full (NautilusWindowSlot *slot,
GFile *location,
NautilusWindowOpenMode mode,
NautilusWindowOpenFlags flags,
- GList *new_selection);
+ GList *new_selection,
+ NautilusWindowGoToCallback callback,
+ gpointer user_data);
void nautilus_window_slot_stop_loading (NautilusWindowSlot *slot);
void nautilus_window_slot_set_content_view (NautilusWindowSlot *slot,
@@ -153,7 +155,12 @@ void nautilus_window_slot_disconnect_content_view (NautilusW
#define nautilus_window_slot_go_to(slot,location, new_tab) \
nautilus_window_slot_open_location_full(slot, location, NAUTILUS_WINDOW_OPEN_ACCORDING_TO_MODE, \
(new_tab ? NAUTILUS_WINDOW_OPEN_FLAG_NEW_TAB : 0), \
- NULL)
+ NULL, NULL, NULL)
+
+#define nautilus_window_slot_go_to_full(slot, location, new_tab, callback, user_data) \
+ nautilus_window_slot_open_location_full(slot, location, NAUTILUS_WINDOW_OPEN_ACCORDING_TO_MODE, \
+ (new_tab ? NAUTILUS_WINDOW_OPEN_FLAG_NEW_TAB : 0), \
+ NULL, callback, user_data)
#define nautilus_window_slot_go_to_with_selection(slot,location,new_selection) \
nautilus_window_slot_open_location_with_selection(slot, location, new_selection, FALSE)
diff --git a/src/nautilus-window.c b/src/nautilus-window.c
index 2f7215f90..eb1b6b51a 100644
--- a/src/nautilus-window.c
+++ b/src/nautilus-window.c
@@ -234,6 +234,17 @@ nautilus_window_go_to (NautilusWindow *window, GFile *location)
}
void
+nautilus_window_go_to_full (NautilusWindow *window,
+ GFile *location,
+ NautilusWindowGoToCallback callback,
+ gpointer user_data)
+{
+ g_return_if_fail (NAUTILUS_IS_WINDOW (window));
+
+ nautilus_window_slot_go_to_full (window->details->active_pane->active_slot, location, FALSE, callback, user_data);
+}
+
+void
nautilus_window_go_to_with_selection (NautilusWindow *window, GFile *location, GList *new_selection)
{
g_return_if_fail (NAUTILUS_IS_WINDOW (window));
@@ -318,7 +329,8 @@ nautilus_window_go_up (NautilusWindow *window, gboolean close_behind, gboolean n
nautilus_window_slot_open_location_full (slot, parent,
NAUTILUS_WINDOW_OPEN_ACCORDING_TO_MODE,
flags,
- selection);
+ selection,
+ NULL, NULL);
g_object_unref (parent);
diff --git a/src/nautilus-window.h b/src/nautilus-window.h
index 491557c67..10751d815 100644
--- a/src/nautilus-window.h
+++ b/src/nautilus-window.h
@@ -132,6 +132,10 @@ void nautilus_window_disconnect_content_view (NautilusWindow *win
void nautilus_window_go_to (NautilusWindow *window,
GFile *location);
+void nautilus_window_go_to_full (NautilusWindow *window,
+ GFile *location,
+ NautilusWindowGoToCallback callback,
+ gpointer user_data);
void nautilus_window_go_to_with_selection (NautilusWindow *window,
GFile *location,
GList *new_selection);