diff options
author | Martin Wehner <martin.wehner@gmail.com> | 2005-08-05 21:31:26 +0000 |
---|---|---|
committer | Martin Wehner <mwehner@src.gnome.org> | 2005-08-05 21:31:26 +0000 |
commit | b3c5e974c492e132bcaa3cc926f3f56526201851 (patch) | |
tree | d174d88150cbebdff49e1cd0bc572753bc2113a6 | |
parent | d0ff820ee73fc7d3b5f754b709c268d757622a9a (diff) | |
download | nautilus-b3c5e974c492e132bcaa3cc926f3f56526201851.tar.gz |
Open the appropriate kind of window when jumping to bookmark. Fixes
2005-08-05 Martin Wehner <martin.wehner@gmail.com>
* src/nautilus-bookmarks-window.c: (create_bookmarks_window),
(open_selected_bookmark): Open the appropriate kind of window when
jumping to bookmark. Fixes #312160.
Patch from Jaap Haitsma <jaap@haitsma.org>
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | src/nautilus-bookmarks-window.c | 92 |
2 files changed, 53 insertions, 47 deletions
@@ -1,3 +1,11 @@ +2005-08-05 Martin Wehner <martin.wehner@gmail.com> + + * src/nautilus-bookmarks-window.c: (create_bookmarks_window), + (open_selected_bookmark): Open the appropriate kind of window when + jumping to bookmark. Fixes #312160. + + Patch from Jaap Haitsma <jaap@haitsma.org> + 2005-08-05 Christian Neumair <chris@gnome-de.org> * src/nautilus-property-browser.c: Adapt to eel wrap table changes. diff --git a/src/nautilus-bookmarks-window.c b/src/nautilus-bookmarks-window.c index 2619f1fa7..201d2c0bc 100644 --- a/src/nautilus-bookmarks-window.c +++ b/src/nautilus-bookmarks-window.c @@ -29,6 +29,7 @@ #include "nautilus-bookmarks-window.h" #include "nautilus-window.h" #include "nautilus-navigation-window.h" +#include "nautilus-spatial-window.h" #include <libnautilus-private/nautilus-undo.h> #include <libnautilus-private/nautilus-global-preferences.h> #include <eel/eel-gtk-extensions.h> @@ -65,6 +66,8 @@ static int row_deleted_signal_id; static int row_activated_signal_id; static int key_pressed_signal_id; static int jump_button_signal_id; +static NautilusApplication *application; +static gboolean parent_is_browser_window; /* forward declarations */ static guint get_selected_row (void); @@ -111,7 +114,6 @@ static void on_window_destroy_event (GtkWidget static void repopulate (void); static void set_up_close_accelerator (GtkWidget *window); static void open_selected_bookmark (gpointer user_data, GdkScreen *screen); -static NautilusWindow * get_bookmark_nautilus_navigation_window_new (GdkScreen *screen); /* We store a pointer to the bookmark in a column so when an item is moved with DnD we know which item it is. However we have to be careful to keep @@ -261,6 +263,14 @@ create_bookmarks_window (NautilusBookmarkList *list, GObject *undo_manager_sourc return NULL; } + application = NAUTILUS_WINDOW (undo_manager_source)->application; + + if (NAUTILUS_IS_NAVIGATION_WINDOW (undo_manager_source)) { + parent_is_browser_window = TRUE; + } else { + parent_is_browser_window = FALSE; + } + set_up_close_accelerator (window); nautilus_undo_share_undo_manager (G_OBJECT (window), undo_manager_source); @@ -535,60 +545,48 @@ on_name_field_changed (GtkEditable *editable, } static void -go_to_selected_bookmark (NautilusWindow *window) -{ - NautilusBookmark *selected; - char *uri = NULL; - - selected = get_selected_bookmark (); - - if (selected) { - uri = nautilus_bookmark_get_uri (selected); - nautilus_window_go_to (window, uri); - g_free (uri); - } -} - -static NautilusWindow * -get_bookmark_nautilus_navigation_window_new (GdkScreen *screen) +open_selected_bookmark (gpointer user_data, GdkScreen *screen) { - NautilusApplication *application; + NautilusBookmark *selected; NautilusWindow *window; + char *uri = NULL; + + selected = get_selected_bookmark (); - application = nautilus_application_new (); - - window = nautilus_application_create_navigation_window (application, - NULL, - screen); + if (!selected) { + return; + } - return window; -} + uri = nautilus_bookmark_get_uri (selected); -static void -open_selected_bookmark (gpointer user_data, GdkScreen *screen) -{ + if (!uri) { + return; + } - if (GTK_IS_WIDGET (user_data) && NAUTILUS_IS_NAVIGATION_WINDOW (user_data)) { - go_to_selected_bookmark (NAUTILUS_WINDOW (user_data)); - } else { - /* Independent bookmarks window. If parent NautilusWindow is destroyed, then - * open the bookmark location in a new nautilus window - */ - NautilusBookmark *selected; - NautilusWindow *window; - char *uri = NULL; - - selected = get_selected_bookmark (); - - if (selected) { - window = get_bookmark_nautilus_navigation_window_new (screen); - uri = nautilus_bookmark_get_uri (selected); - if (uri) { - nautilus_window_go_to (NAUTILUS_WINDOW (window), uri); - g_free (uri); - } + if (NAUTILUS_IS_NAVIGATION_WINDOW (user_data)) { + nautilus_window_go_to (NAUTILUS_WINDOW (user_data), uri); + } else if (NAUTILUS_IS_SPATIAL_WINDOW (user_data)) { + window = nautilus_application_present_spatial_window (application, + NULL, + NULL, + uri, + screen); + } else { /* window that opened bookmarks window has been closed */ + if (parent_is_browser_window || eel_preferences_get_boolean (NAUTILUS_PREFERENCES_ALWAYS_USE_BROWSER)) { + window = nautilus_application_create_navigation_window (application, + NULL, + screen); + nautilus_window_go_to (window, uri); + } else { + window = nautilus_application_present_spatial_window (application, + NULL, + NULL, + uri, + screen); } } + + g_free (uri); } static void |