diff options
author | Cosimo Cecchi <cosimoc@gnome.org> | 2012-10-23 10:55:26 -0400 |
---|---|---|
committer | Cosimo Cecchi <cosimoc@gnome.org> | 2012-10-23 16:10:04 -0400 |
commit | cbbf9c88548f2295921bfe9fbf30ea0ca59d1b6f (patch) | |
tree | 1533ffcd232e2a756e492ac2dfbfd121aafecb29 | |
parent | 15d056a712cf3f6935bcb95003881aea01475693 (diff) | |
download | nautilus-cbbf9c88548f2295921bfe9fbf30ea0ca59d1b6f.tar.gz |
slot: finish moving all other private data to private struct
Now that we got rid of nautilus-window-manage-views, move all the
private data in NautilusWindowSlot outside of the public struct.
-rw-r--r-- | src/nautilus-desktop-window.c | 16 | ||||
-rw-r--r-- | src/nautilus-notebook.c | 8 | ||||
-rw-r--r-- | src/nautilus-toolbar.c | 3 | ||||
-rw-r--r-- | src/nautilus-window-menus.c | 12 | ||||
-rw-r--r-- | src/nautilus-window-private.h | 5 | ||||
-rw-r--r-- | src/nautilus-window-slot.c | 697 | ||||
-rw-r--r-- | src/nautilus-window-slot.h | 101 | ||||
-rw-r--r-- | src/nautilus-window.c | 242 | ||||
-rw-r--r-- | src/nautilus-window.h | 2 |
9 files changed, 520 insertions, 566 deletions
diff --git a/src/nautilus-desktop-window.c b/src/nautilus-desktop-window.c index 6b78ca3fc..6fabf815c 100644 --- a/src/nautilus-desktop-window.c +++ b/src/nautilus-desktop-window.c @@ -255,13 +255,6 @@ realize (GtkWidget *widget) G_CALLBACK (nautilus_desktop_window_screen_size_changed), window); } -static NautilusIconInfo * -real_get_icon (NautilusWindow *window, - NautilusWindowSlot *slot) -{ - return nautilus_icon_info_lookup_from_name (NAUTILUS_DESKTOP_ICON_DESKTOP, 48); -} - static void real_sync_title (NautilusWindow *window, NautilusWindowSlot *slot) @@ -278,13 +271,6 @@ real_window_close (NautilusWindow *window) } static void -real_sync_view_as_menus (NautilusWindow *window) -{ - /* stub, does nothing */ - return; -} - -static void nautilus_desktop_window_class_init (NautilusDesktopWindowClass *klass) { GtkWidgetClass *wclass = GTK_WIDGET_CLASS (klass); @@ -299,8 +285,6 @@ nautilus_desktop_window_class_init (NautilusDesktopWindowClass *klass) wclass->delete_event = nautilus_desktop_window_delete_event; nclass->sync_title = real_sync_title; - nclass->sync_view_as_menus = real_sync_view_as_menus; - nclass->get_icon = real_get_icon; nclass->close = real_window_close; g_type_class_add_private (klass, sizeof (NautilusDesktopWindowDetails)); diff --git a/src/nautilus-notebook.c b/src/nautilus-notebook.c index aaabf8b30..3ffe0245d 100644 --- a/src/nautilus-notebook.c +++ b/src/nautilus-notebook.c @@ -254,7 +254,7 @@ nautilus_notebook_sync_loading (NautilusNotebook *notebook, NautilusWindowSlot *slot) { GtkWidget *tab_label, *spinner, *icon; - gboolean active; + gboolean active, allow_stop; g_return_if_fail (NAUTILUS_IS_NOTEBOOK (notebook)); g_return_if_fail (NAUTILUS_IS_WINDOW_SLOT (slot)); @@ -269,11 +269,13 @@ nautilus_notebook_sync_loading (NautilusNotebook *notebook, active = FALSE; g_object_get (spinner, "active", &active, NULL); - if (active == slot->allow_stop) { + allow_stop = nautilus_window_slot_get_allow_stop (slot); + + if (active == allow_stop) { return; } - if (slot->allow_stop) { + if (allow_stop) { gtk_widget_hide (icon); gtk_widget_show (spinner); gtk_spinner_start (GTK_SPINNER (spinner)); diff --git a/src/nautilus-toolbar.c b/src/nautilus-toolbar.c index d1f63cf82..5116ccc24 100644 --- a/src/nautilus-toolbar.c +++ b/src/nautilus-toolbar.c @@ -171,8 +171,9 @@ fill_menu (NautilusWindow *window, GList *list; slot = nautilus_window_get_active_slot (window); + list = back ? nautilus_window_slot_get_back_history (slot) : + nautilus_window_slot_get_forward_history (slot); - list = back ? slot->back_list : slot->forward_list; index = 0; while (list != NULL) { menu_item = nautilus_bookmark_menu_item_new (NAUTILUS_BOOKMARK (list->data)); diff --git a/src/nautilus-window-menus.c b/src/nautilus-window-menus.c index 5d1a70362..c3a1a9069 100644 --- a/src/nautilus-window-menus.c +++ b/src/nautilus-window-menus.c @@ -309,15 +309,11 @@ action_add_bookmark_callback (GtkAction *action, { NautilusWindow *window = user_data; NautilusApplication *app = NAUTILUS_APPLICATION (g_application_get_default ()); - NautilusBookmark *bookmark; NautilusWindowSlot *slot; - NautilusBookmarkList *list; slot = nautilus_window_get_active_slot (window); - bookmark = slot->current_location_bookmark; - list = nautilus_application_get_bookmarks (app); - - nautilus_bookmark_list_append (list, bookmark); + nautilus_bookmark_list_append (nautilus_application_get_bookmarks (app), + nautilus_window_slot_get_bookmark (slot)); } static void @@ -755,6 +751,7 @@ nautilus_window_finalize_menus (NautilusWindow *window) static GList * get_extension_menus (NautilusWindow *window) { + NautilusFile *file; NautilusWindowSlot *slot; GList *providers; GList *items; @@ -764,6 +761,7 @@ get_extension_menus (NautilusWindow *window) items = NULL; slot = nautilus_window_get_active_slot (window); + file = nautilus_window_slot_get_file (slot); for (l = providers; l != NULL; l = l->next) { NautilusMenuProvider *provider; @@ -772,7 +770,7 @@ get_extension_menus (NautilusWindow *window) provider = NAUTILUS_MENU_PROVIDER (l->data); file_items = nautilus_menu_provider_get_background_items (provider, GTK_WIDGET (window), - slot->viewed_file); + file); items = g_list_concat (items, file_items); } diff --git a/src/nautilus-window-private.h b/src/nautilus-window-private.h index 44fdbde72..d49a50709 100644 --- a/src/nautilus-window-private.h +++ b/src/nautilus-window-private.h @@ -91,9 +91,6 @@ typedef void (*NautilusBookmarkFailedCallback) (NautilusWindow *window, void nautilus_window_load_extension_menus (NautilusWindow *window); -NautilusWindowSlot *nautilus_window_get_slot_for_view (NautilusWindow *window, - NautilusView *view); - void nautilus_window_set_active_slot (NautilusWindow *window, NautilusWindowSlot *slot); @@ -109,8 +106,6 @@ void nautilus_window_sync_title (NautilusWindow *window, NautilusWindowSlot *slot); void nautilus_window_sync_zoom_widgets (NautilusWindow *window); void nautilus_window_sync_up_button (NautilusWindow *window); -void nautilus_window_sync_view_as_menus (NautilusWindow *window); - void nautilus_window_set_search_visible (NautilusWindow *window, gboolean visible); diff --git a/src/nautilus-window-slot.c b/src/nautilus-window-slot.c index 68e18f321..6534acde8 100644 --- a/src/nautilus-window-slot.c +++ b/src/nautilus-window-slot.c @@ -28,8 +28,10 @@ #include "nautilus-actions.h" #include "nautilus-application.h" +#include "nautilus-canvas-view.h" #include "nautilus-desktop-window.h" #include "nautilus-floating-bar.h" +#include "nautilus-list-view.h" #include "nautilus-special-location-bar.h" #include "nautilus-toolbar.h" #include "nautilus-trash-bar.h" @@ -81,15 +83,49 @@ struct NautilusWindowSlotDetails { GFile *location; gchar *title; + /* Viewed file */ + NautilusView *content_view; + NautilusView *new_content_view; + NautilusFile *viewed_file; + gboolean viewed_file_seen; + gboolean viewed_file_in_trash; + + /* Information about bookmarks and history list */ + NautilusBookmark *current_location_bookmark; + NautilusBookmark *last_location_bookmark; + GList *back_list; + GList *forward_list; + + /* Query editor */ + NautilusQueryEditor *query_editor; + gulong qe_changed_id; + gulong qe_cancel_id; + gulong qe_activated_id; + /* Load state */ GCancellable *find_mount_cancellable; + gboolean allow_stop; gboolean needs_reload; + gboolean load_with_search; /* Ensures that we do not react on signals of a * view that is re-used as new view when its loading * is cancelled */ gboolean temporarily_ignore_view_signals; + + /* New location. */ + GFile *pending_location; + NautilusLocationChangeType location_change_type; + guint location_change_distance; + char *pending_scroll_to; + GList *pending_selection; + NautilusFile *determine_view_file; + GCancellable *mount_cancellable; + GError *mount_error; + gboolean tried_mount; + NautilusWindowGoToCallback open_callback; + gpointer open_callback_user_data; }; static guint signals[LAST_SIGNAL] = { 0 }; @@ -99,16 +135,81 @@ static void nautilus_window_slot_force_reload (NautilusWindowSlot *slot); static void location_has_really_changed (NautilusWindowSlot *slot); static void nautilus_window_slot_connect_new_content_view (NautilusWindowSlot *slot); -gboolean -nautilus_window_slot_handle_event (NautilusWindowSlot *slot, - GdkEventKey *event) +static void +toggle_toolbar_search_button (NautilusWindowSlot *slot, + gboolean active) { - NautilusWindow *window; + GtkActionGroup *action_group; + GtkAction *action; - window = nautilus_window_slot_get_window (slot); - if (NAUTILUS_IS_DESKTOP_WINDOW (window)) + action_group = nautilus_window_get_main_action_group (slot->details->window); + action = gtk_action_group_get_action (action_group, NAUTILUS_ACTION_SEARCH); + + gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), active); +} + +static void +nautilus_window_slot_sync_search_widgets (NautilusWindowSlot *slot) +{ + NautilusDirectory *directory; + gboolean toggle; + + if (slot != nautilus_window_get_active_slot (slot->details->window)) { + return; + } + + toggle = FALSE; + + if (slot->details->load_with_search) { + toggle = TRUE; + } else if (slot->details->content_view != NULL) { + directory = nautilus_view_get_model (slot->details->content_view); + if (NAUTILUS_IS_SEARCH_DIRECTORY (directory) || + gtk_widget_get_visible (GTK_WIDGET (slot->details->query_editor))) { + toggle = TRUE; + } + } + + toggle_toolbar_search_button (slot, toggle); +} + +static gboolean +nautilus_window_slot_content_view_matches_iid (NautilusWindowSlot *slot, + const char *iid) +{ + if (slot->details->content_view == NULL) { return FALSE; - return nautilus_query_editor_handle_event (slot->query_editor, event); + } + return g_strcmp0 (nautilus_view_get_view_id (slot->details->content_view), iid) == 0; +} + +static void +nautilus_window_slot_sync_view_as_menus (NautilusWindowSlot *slot) +{ + GtkActionGroup *action_group; + GtkAction *action; + + if (slot != nautilus_window_get_active_slot (slot->details->window)) { + return; + } + + if (slot->details->content_view == NULL || slot->details->new_content_view != NULL) { + return; + } + + action_group = nautilus_window_get_main_action_group (slot->details->window); + + if (nautilus_window_slot_content_view_matches_iid (slot, NAUTILUS_LIST_VIEW_ID)) { + action = gtk_action_group_get_action (action_group, NAUTILUS_ACTION_VIEW_LIST); + } else if (nautilus_window_slot_content_view_matches_iid (slot, NAUTILUS_CANVAS_VIEW_ID)) { + action = gtk_action_group_get_action (action_group, NAUTILUS_ACTION_VIEW_GRID); + } else { + action = NULL; + } + + if (action != NULL) { + gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE); + } } static void @@ -119,17 +220,17 @@ sync_search_directory (NautilusWindowSlot *slot) gchar *text; GFile *location; - g_assert (NAUTILUS_IS_FILE (slot->viewed_file)); + g_assert (NAUTILUS_IS_FILE (slot->details->viewed_file)); - directory = nautilus_directory_get_for_file (slot->viewed_file); + directory = nautilus_directory_get_for_file (slot->details->viewed_file); g_assert (NAUTILUS_IS_SEARCH_DIRECTORY (directory)); - query = nautilus_query_editor_get_query (slot->query_editor); + query = nautilus_query_editor_get_query (slot->details->query_editor); text = nautilus_query_get_text (query); if (!strlen (text)) { - location = nautilus_query_editor_get_location (slot->query_editor); - slot->load_with_search = TRUE; + location = nautilus_query_editor_get_location (slot->details->query_editor); + slot->details->load_with_search = TRUE; nautilus_window_slot_open_location (slot, location, 0); g_object_unref (location); } else { @@ -157,7 +258,7 @@ create_new_search (NautilusWindowSlot *slot) directory = nautilus_directory_get (location); g_assert (NAUTILUS_IS_SEARCH_DIRECTORY (directory)); - query = nautilus_query_editor_get_query (slot->query_editor); + query = nautilus_query_editor_get_query (slot->details->query_editor); nautilus_search_directory_set_query (NAUTILUS_SEARCH_DIRECTORY (directory), query); nautilus_window_slot_open_location (slot, location, 0); @@ -172,23 +273,15 @@ static void query_editor_cancel_callback (NautilusQueryEditor *editor, NautilusWindowSlot *slot) { - GtkAction *search; - NautilusWindow *window; - GtkActionGroup *action_group; - - window = slot->details->window; - action_group = nautilus_window_get_main_action_group (window); - search = gtk_action_group_get_action (action_group, NAUTILUS_ACTION_SEARCH); - - gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (search), FALSE); + toggle_toolbar_search_button (slot, FALSE); } static void query_editor_activated_callback (NautilusQueryEditor *editor, NautilusWindowSlot *slot) { - if (slot->content_view != NULL) { - nautilus_view_activate_selection (slot->content_view); + if (slot->details->content_view != NULL) { + nautilus_view_activate_selection (slot->details->content_view); } } @@ -200,9 +293,9 @@ query_editor_changed_callback (NautilusQueryEditor *editor, { NautilusDirectory *directory; - g_assert (NAUTILUS_IS_FILE (slot->viewed_file)); + g_assert (NAUTILUS_IS_FILE (slot->details->viewed_file)); - directory = nautilus_directory_get_for_file (slot->viewed_file); + directory = nautilus_directory_get_for_file (slot->details->viewed_file); if (!NAUTILUS_IS_SEARCH_DIRECTORY (directory)) { /* this is the first change from the query editor. we ask for a location change to the search directory, @@ -219,22 +312,22 @@ query_editor_changed_callback (NautilusQueryEditor *editor, static void hide_query_editor (NautilusWindowSlot *slot) { - gtk_widget_hide (GTK_WIDGET (slot->query_editor)); + gtk_widget_hide (GTK_WIDGET (slot->details->query_editor)); - if (slot->qe_changed_id > 0) { - g_signal_handler_disconnect (slot->query_editor, slot->qe_changed_id); - slot->qe_changed_id = 0; + if (slot->details->qe_changed_id > 0) { + g_signal_handler_disconnect (slot->details->query_editor, slot->details->qe_changed_id); + slot->details->qe_changed_id = 0; } - if (slot->qe_cancel_id > 0) { - g_signal_handler_disconnect (slot->query_editor, slot->qe_cancel_id); - slot->qe_cancel_id = 0; + if (slot->details->qe_cancel_id > 0) { + g_signal_handler_disconnect (slot->details->query_editor, slot->details->qe_cancel_id); + slot->details->qe_cancel_id = 0; } - if (slot->qe_activated_id > 0) { - g_signal_handler_disconnect (slot->query_editor, slot->qe_activated_id); - slot->qe_activated_id = 0; + if (slot->details->qe_activated_id > 0) { + g_signal_handler_disconnect (slot->details->query_editor, slot->details->qe_activated_id); + slot->details->qe_activated_id = 0; } - nautilus_query_editor_set_query (slot->query_editor, NULL); + nautilus_query_editor_set_query (slot->details->query_editor, NULL); } static void @@ -245,15 +338,15 @@ show_query_editor (NautilusWindowSlot *slot) GFile *location; /* This might be called while we're still loading the location. - * In such a case, just set slot->load_with_search to TRUE, to stop - * nautilus_window_sync_search_widgets() from hiding it again when - * loading has completed. + * In such a case, just set slot->details->load_with_search to TRUE, to stop + * sync_search_widgets() from hiding it again when loading has + * completed. */ if (slot->details->location) { location = slot->details->location; } else { - location = slot->pending_location; - slot->load_with_search = TRUE; + location = slot->details->pending_location; + slot->details->load_with_search = TRUE; } directory = nautilus_directory_get (location); @@ -263,30 +356,33 @@ show_query_editor (NautilusWindowSlot *slot) search_directory = NAUTILUS_SEARCH_DIRECTORY (directory); query = nautilus_search_directory_get_query (search_directory); if (query != NULL) { - nautilus_query_editor_set_query (slot->query_editor, + nautilus_query_editor_set_query (slot->details->query_editor, query); g_object_unref (query); } } else { - nautilus_query_editor_set_location (slot->query_editor, location); + nautilus_query_editor_set_location (slot->details->query_editor, location); } nautilus_directory_unref (directory); - gtk_widget_show (GTK_WIDGET (slot->query_editor)); - gtk_widget_grab_focus (GTK_WIDGET (slot->query_editor)); + gtk_widget_show (GTK_WIDGET (slot->details->query_editor)); + gtk_widget_grab_focus (GTK_WIDGET (slot->details->query_editor)); - if (slot->qe_changed_id == 0) { - slot->qe_changed_id = g_signal_connect (slot->query_editor, "changed", - G_CALLBACK (query_editor_changed_callback), slot); + if (slot->details->qe_changed_id == 0) { + slot->details->qe_changed_id = + g_signal_connect (slot->details->query_editor, "changed", + G_CALLBACK (query_editor_changed_callback), slot); } - if (slot->qe_cancel_id == 0) { - slot->qe_cancel_id = g_signal_connect (slot->query_editor, "cancel", - G_CALLBACK (query_editor_cancel_callback), slot); + if (slot->details->qe_cancel_id == 0) { + slot->details->qe_cancel_id = + g_signal_connect (slot->details->query_editor, "cancel", + G_CALLBACK (query_editor_cancel_callback), slot); } - if (slot->qe_activated_id == 0) { - slot->qe_activated_id = g_signal_connect (slot->query_editor, "activated", - G_CALLBACK (query_editor_activated_callback), slot); + if (slot->details->qe_activated_id == 0) { + slot->details->qe_activated_id = + g_signal_connect (slot->details->query_editor, "activated", + G_CALLBACK (query_editor_activated_callback), slot); } } @@ -301,6 +397,32 @@ nautilus_window_slot_set_query_editor_visible (NautilusWindowSlot *slot, } } +GFile * +nautilus_window_slot_get_query_editor_location (NautilusWindowSlot *slot) +{ + return nautilus_query_editor_get_location (slot->details->query_editor); +} + +gboolean +nautilus_window_slot_handle_event (NautilusWindowSlot *slot, + GdkEventKey *event) +{ + NautilusWindow *window; + gboolean retval; + + retval = FALSE; + window = nautilus_window_slot_get_window (slot); + if (!NAUTILUS_IS_DESKTOP_WINDOW (window)) { + retval = nautilus_query_editor_handle_event (slot->details->query_editor, event); + } + + if (retval) { + toggle_toolbar_search_button (slot, TRUE); + } + + return retval; +} + static void real_active (NautilusWindowSlot *slot) { @@ -319,10 +441,10 @@ real_active (NautilusWindowSlot *slot) nautilus_window_sync_title (window, slot); nautilus_window_sync_zoom_widgets (window); nautilus_window_sync_location_widgets (window); - nautilus_window_sync_search_widgets (window); + nautilus_window_slot_sync_search_widgets (slot); - if (slot->viewed_file != NULL) { - nautilus_window_sync_view_as_menus (window); + if (slot->details->viewed_file != NULL) { + nautilus_window_slot_sync_view_as_menus (slot); nautilus_window_load_extension_menus (window); } } @@ -354,7 +476,7 @@ remove_all_extra_location_widgets (GtkWidget *widget, NautilusDirectory *directory; directory = nautilus_directory_get (slot->details->location); - if (widget != GTK_WIDGET (slot->query_editor)) { + if (widget != GTK_WIDGET (slot->details->query_editor)) { gtk_container_remove (GTK_CONTAINER (slot->details->extra_location_widgets), widget); } @@ -431,10 +553,10 @@ nautilus_window_slot_constructed (GObject *object) gtk_box_pack_start (GTK_BOX (slot), extras_vbox, FALSE, FALSE, 0); gtk_widget_show (extras_vbox); - slot->query_editor = NAUTILUS_QUERY_EDITOR (nautilus_query_editor_new ()); - nautilus_window_slot_add_extra_location_widget (slot, GTK_WIDGET (slot->query_editor)); - g_object_add_weak_pointer (G_OBJECT (slot->query_editor), - (gpointer *) &slot->query_editor); + slot->details->query_editor = NAUTILUS_QUERY_EDITOR (nautilus_query_editor_new ()); + nautilus_window_slot_add_extra_location_widget (slot, GTK_WIDGET (slot->details->query_editor)); + g_object_add_weak_pointer (G_OBJECT (slot->details->query_editor), + (gpointer *) &slot->details->query_editor); slot->details->view_overlay = gtk_overlay_new (); gtk_widget_add_events (slot->details->view_overlay, @@ -663,12 +785,12 @@ static gboolean report_callback (NautilusWindowSlot *slot, GError *error) { - if (slot->open_callback != NULL) { + if (slot->details->open_callback != NULL) { gboolean res; - res = slot->open_callback (nautilus_window_slot_get_window (slot), - error, slot->open_callback_user_data); - slot->open_callback = NULL; - slot->open_callback_user_data = NULL; + res = slot->details->open_callback (nautilus_window_slot_get_window (slot), + error, slot->details->open_callback_user_data); + slot->details->open_callback = NULL; + slot->details->open_callback_user_data = NULL; return res; } @@ -756,10 +878,10 @@ begin_location_change (NautilusWindowSlot *slot, slot->details->tried_mount = FALSE; slot->details->pending_selection = eel_g_object_list_copy (new_selection); - slot->pending_scroll_to = g_strdup (scroll_pos); + slot->details->pending_scroll_to = g_strdup (scroll_pos); - slot->open_callback = callback; - slot->open_callback_user_data = user_data; + slot->details->open_callback = callback; + slot->details->open_callback_user_data = user_data; directory = nautilus_directory_get (location); @@ -789,19 +911,18 @@ begin_location_change (NautilusWindowSlot *slot, } /* Set current_bookmark scroll pos */ - if (slot->current_location_bookmark != NULL && - slot->content_view != NULL) { - current_pos = nautilus_view_get_first_visible_file (slot->content_view); - nautilus_bookmark_set_scroll_pos (slot->current_location_bookmark, current_pos); + if (slot->details->current_location_bookmark != NULL && + slot->details->content_view != NULL) { + current_pos = nautilus_view_get_first_visible_file (slot->details->content_view); + nautilus_bookmark_set_scroll_pos (slot->details->current_location_bookmark, current_pos); g_free (current_pos); } /* Get the info needed for view selection */ - - slot->determine_view_file = nautilus_file_get (location); - g_assert (slot->determine_view_file != NULL); + slot->details->determine_view_file = nautilus_file_get (location); + g_assert (slot->details->determine_view_file != NULL); - nautilus_file_call_when_ready (slot->determine_view_file, + nautilus_file_call_when_ready (slot->details->determine_view_file, NAUTILUS_FILE_ATTRIBUTE_INFO | NAUTILUS_FILE_ATTRIBUTE_MOUNT, got_file_info_for_view_selection_callback, @@ -839,18 +960,18 @@ viewed_file_changed_callback (NautilusFile *file, g_assert (NAUTILUS_IS_FILE (file)); g_assert (NAUTILUS_IS_WINDOW_SLOT (slot)); - g_assert (file == slot->viewed_file); + g_assert (file == slot->details->viewed_file); if (!nautilus_file_is_not_yet_confirmed (file)) { - slot->viewed_file_seen = TRUE; + slot->details->viewed_file_seen = TRUE; } - was_in_trash = slot->viewed_file_in_trash; + was_in_trash = slot->details->viewed_file_in_trash; - slot->viewed_file_in_trash = is_in_trash = nautilus_file_is_in_trash (file); + slot->details->viewed_file_in_trash = is_in_trash = nautilus_file_is_in_trash (file); if (nautilus_file_is_gone (file) || (is_in_trash && !was_in_trash)) { - if (slot->viewed_file_seen) { + if (slot->details->viewed_file_seen) { /* auto-show existing parent. */ GFile *go_to_file; GFile *parent; @@ -898,17 +1019,17 @@ nautilus_window_slot_set_viewed_file (NautilusWindowSlot *slot, { NautilusFileAttributes attributes; - if (slot->viewed_file == file) { + if (slot->details->viewed_file == file) { return; } nautilus_file_ref (file); - if (slot->viewed_file != NULL) { - g_signal_handlers_disconnect_by_func (slot->viewed_file, - G_CALLBACK (viewed_file_changed_callback), + if (slot->details->viewed_file != NULL) { + g_signal_handlers_disconnect_by_func (slot->details->viewed_file, + G_CALLBACK (viewed_file_changed_callback), slot); - nautilus_file_monitor_remove (slot->viewed_file, + nautilus_file_monitor_remove (slot->details->viewed_file, slot); } @@ -922,8 +1043,8 @@ nautilus_window_slot_set_viewed_file (NautilusWindowSlot *slot, G_CALLBACK (viewed_file_changed_callback), slot, 0); } - nautilus_file_unref (slot->viewed_file); - slot->viewed_file = file; + nautilus_file_unref (slot->details->viewed_file); + slot->details->viewed_file = file; } typedef struct { @@ -952,19 +1073,19 @@ mount_not_mounted_callback (GObject *source_object, return; } - slot->mount_cancellable = NULL; + slot->details->mount_cancellable = NULL; slot->details->determine_view_file = nautilus_file_get (slot->details->pending_location); error = NULL; if (!g_file_mount_enclosing_volume_finish (G_FILE (source_object), res, &error)) { - slot->mount_error = error; - got_file_info_for_view_selection_callback (slot->determine_view_file, slot); - slot->mount_error = NULL; + slot->details->mount_error = error; + got_file_info_for_view_selection_callback (slot->details->determine_view_file, slot); + slot->details->mount_error = NULL; g_error_free (error); } else { - nautilus_file_invalidate_all_attributes (slot->determine_view_file); - nautilus_file_call_when_ready (slot->determine_view_file, + nautilus_file_invalidate_all_attributes (slot->details->determine_view_file); + nautilus_file_call_when_ready (slot->details->determine_view_file, NAUTILUS_FILE_ATTRIBUTE_INFO, got_file_info_for_view_selection_callback, slot); @@ -991,20 +1112,20 @@ got_file_info_for_view_selection_callback (NautilusFile *file, slot = callback_data; window = nautilus_window_slot_get_window (slot); - g_assert (slot->determine_view_file == file); - slot->determine_view_file = NULL; + g_assert (slot->details->determine_view_file == file); + slot->details->determine_view_file = NULL; nautilus_profile_start (NULL); - if (slot->mount_error) { - error = g_error_copy (slot->mount_error); + if (slot->details->mount_error) { + error = g_error_copy (slot->details->mount_error); } else if (nautilus_file_get_file_info_error (file) != NULL) { error = g_error_copy (nautilus_file_get_file_info_error (file)); } if (error && error->domain == G_IO_ERROR && error->code == G_IO_ERROR_NOT_MOUNTED && - !slot->tried_mount) { - slot->tried_mount = TRUE; + !slot->details->tried_mount) { + slot->details->tried_mount = TRUE; mount_op = gtk_mount_operation_new (GTK_WINDOW (window)); g_mount_operation_set_password_save (mount_op, G_PASSWORD_SAVE_FOR_SESSION); @@ -1012,8 +1133,8 @@ got_file_info_for_view_selection_callback (NautilusFile *file, data = g_new0 (MountNotMountedData, 1); data->cancellable = g_cancellable_new (); data->slot = slot; - slot->mount_cancellable = data->cancellable; - g_file_mount_enclosing_volume (location, 0, mount_op, slot->mount_cancellable, + slot->details->mount_cancellable = data->cancellable; + g_file_mount_enclosing_volume (location, 0, mount_op, slot->details->mount_cancellable, mount_not_mounted_callback, data); g_object_unref (location); g_object_unref (mount_op); @@ -1024,8 +1145,8 @@ got_file_info_for_view_selection_callback (NautilusFile *file, parent_file = nautilus_file_get_parent (file); if ((parent_file != NULL) && nautilus_file_get_file_type (file) == G_FILE_TYPE_REGULAR) { - if (slot->pending_selection != NULL) { - g_list_free_full (slot->pending_selection, (GDestroyNotify) nautilus_file_unref); + if (slot->details->pending_selection != NULL) { + g_list_free_full (slot->details->pending_selection, (GDestroyNotify) nautilus_file_unref); } g_clear_object (&slot->details->pending_location); @@ -1036,8 +1157,8 @@ got_file_info_for_view_selection_callback (NautilusFile *file, slot->details->determine_view_file = parent_file; slot->details->pending_scroll_to = nautilus_file_get_uri (file); - nautilus_file_invalidate_all_attributes (slot->determine_view_file); - nautilus_file_call_when_ready (slot->determine_view_file, + nautilus_file_invalidate_all_attributes (slot->details->determine_view_file); + nautilus_file_call_when_ready (slot->details->determine_view_file, NAUTILUS_FILE_ATTRIBUTE_INFO, got_file_info_for_view_selection_callback, slot); @@ -1207,14 +1328,14 @@ create_content_view (NautilusWindowSlot *slot, /* create a new content view */ view = nautilus_view_factory_create (view_id, slot); - slot->new_content_view = view; + slot->details->new_content_view = view; nautilus_window_slot_connect_new_content_view (slot); } /* Forward search selection and state before loading the new model */ old_location = nautilus_window_slot_get_location (slot); old_directory = nautilus_directory_get (old_location); - new_directory = nautilus_directory_get (slot->pending_location); + new_directory = nautilus_directory_get (slot->details->pending_location); if (NAUTILUS_IS_SEARCH_DIRECTORY (new_directory) && !NAUTILUS_IS_SEARCH_DIRECTORY (old_directory)) { @@ -1223,23 +1344,23 @@ create_content_view (NautilusWindowSlot *slot, if (NAUTILUS_IS_SEARCH_DIRECTORY (old_directory) && !NAUTILUS_IS_SEARCH_DIRECTORY (new_directory) && - slot->pending_selection == NULL) { - slot->pending_selection = nautilus_view_get_selection (slot->content_view); + slot->details->pending_selection == NULL) { + slot->details->pending_selection = nautilus_view_get_selection (slot->details->content_view); } /* Actually load the pending location and selection: */ - if (slot->pending_location != NULL) { + if (slot->details->pending_location != NULL) { load_new_location (slot, - slot->pending_location, - slot->pending_selection, + slot->details->pending_location, + slot->details->pending_selection, FALSE, TRUE); - g_list_free_full (slot->pending_selection, g_object_unref); - slot->pending_selection = NULL; + g_list_free_full (slot->details->pending_selection, g_object_unref); + slot->details->pending_selection = NULL; } else if (old_location != NULL) { - selection = nautilus_view_get_selection (slot->content_view); + selection = nautilus_view_get_selection (slot->details->content_view); load_new_location (slot, old_location, selection, @@ -1281,19 +1402,19 @@ load_new_location (NautilusWindowSlot *slot, nautilus_profile_start (NULL); /* Note, these may recurse into report_load_underway */ - if (slot->content_view != NULL && tell_current_content_view) { - view = slot->content_view; - nautilus_view_load_location (slot->content_view, location); + if (slot->details->content_view != NULL && tell_current_content_view) { + view = slot->details->content_view; + nautilus_view_load_location (slot->details->content_view, location); } - if (slot->new_content_view != NULL && tell_new_content_view && + if (slot->details->new_content_view != NULL && tell_new_content_view && (!tell_current_content_view || - slot->new_content_view != slot->content_view) ) { - view = slot->new_content_view; - nautilus_view_load_location (slot->new_content_view, location); + slot->details->new_content_view != slot->details->content_view) ) { + view = slot->details->new_content_view; + nautilus_view_load_location (slot->details->new_content_view, location); } if (view != NULL) { - /* slot->new_content_view might have changed here if + /* new_content_view might have changed here if report_load_underway was called from load_location */ nautilus_view_set_selection (view, selection_copy); } @@ -1316,11 +1437,11 @@ end_location_change (NautilusWindowSlot *slot) nautilus_window_slot_set_allow_stop (slot, FALSE); - /* Now we can free pending_scroll_to, since the load_complete + /* Now we can free details->pending_scroll_to, since the load_complete * callback already has been emitted. */ - g_free (slot->pending_scroll_to); - slot->pending_scroll_to = NULL; + g_free (slot->details->pending_scroll_to); + slot->details->pending_scroll_to = NULL; free_location_change (slot); } @@ -1332,34 +1453,34 @@ free_location_change (NautilusWindowSlot *slot) window = nautilus_window_slot_get_window (slot); - g_clear_object (&slot->pending_location); - g_list_free_full (slot->pending_selection, g_object_unref); - slot->pending_selection = NULL; + g_clear_object (&slot->details->pending_location); + g_list_free_full (slot->details->pending_selection, g_object_unref); + slot->details->pending_selection = NULL; - /* Don't free pending_scroll_to, since thats needed until + /* Don't free details->pending_scroll_to, since thats needed until * the load_complete callback. */ - if (slot->mount_cancellable != NULL) { - g_cancellable_cancel (slot->mount_cancellable); - slot->mount_cancellable = NULL; + if (slot->details->mount_cancellable != NULL) { + g_cancellable_cancel (slot->details->mount_cancellable); + slot->details->mount_cancellable = NULL; } - if (slot->determine_view_file != NULL) { + if (slot->details->determine_view_file != NULL) { nautilus_file_cancel_call_when_ready - (slot->determine_view_file, + (slot->details->determine_view_file, got_file_info_for_view_selection_callback, slot); - slot->determine_view_file = NULL; + slot->details->determine_view_file = NULL; } - if (slot->new_content_view != NULL) { + if (slot->details->new_content_view != NULL) { slot->details->temporarily_ignore_view_signals = TRUE; - nautilus_view_stop_loading (slot->new_content_view); + nautilus_view_stop_loading (slot->details->new_content_view); slot->details->temporarily_ignore_view_signals = FALSE; - nautilus_window_disconnect_content_view (window, slot->new_content_view); - g_object_unref (slot->new_content_view); - slot->new_content_view = NULL; + nautilus_window_disconnect_content_view (window, slot->details->new_content_view); + g_object_unref (slot->details->new_content_view); + slot->details->new_content_view = NULL; } } @@ -1370,16 +1491,17 @@ cancel_location_change (NautilusWindowSlot *slot) GFile *location; location = nautilus_window_slot_get_location (slot); + if (slot->details->pending_location != NULL && location != NULL - && slot->content_view != NULL) { + && slot->details->content_view != NULL) { /* No need to tell the new view - either it is the * same as the old view, in which case it will already * be told, or it is the very pending change we wish * to cancel. */ - selection = nautilus_view_get_selection (slot->content_view); + selection = nautilus_view_get_selection (slot->details->content_view); load_new_location (slot, location, selection, @@ -1456,21 +1578,6 @@ display_view_selection_failure (NautilusWindow *window, NautilusFile *file, g_free (detail_message); } - -void -nautilus_window_slot_stop_loading (NautilusWindowSlot *slot) -{ - nautilus_view_stop_loading (slot->content_view); - - if (slot->new_content_view != NULL) { - slot->details->temporarily_ignore_view_signals = TRUE; - nautilus_view_stop_loading (slot->new_content_view); - slot->details->temporarily_ignore_view_signals = FALSE; - } - - cancel_location_change (slot); -} - void nautilus_window_slot_set_content_view (NautilusWindowSlot *slot, const char *id) @@ -1492,14 +1599,14 @@ nautilus_window_slot_set_content_view (NautilusWindowSlot *slot, nautilus_window_slot_set_allow_stop (slot, TRUE); - if (nautilus_view_get_selection_count (slot->content_view) == 0) { + if (nautilus_view_get_selection_count (slot->details->content_view) == 0) { /* If there is no selection, queue a scroll to the same icon that * is currently visible */ - slot->pending_scroll_to = nautilus_view_get_first_visible_file (slot->content_view); + slot->details->pending_scroll_to = nautilus_view_get_first_visible_file (slot->details->content_view); } slot->details->location_change_type = NAUTILUS_LOCATION_CHANGE_RELOAD; - if (!create_content_view (slot, id, NULL)) { + if (!create_content_view (slot, id, NULL)) { /* Just load the homedir. */ nautilus_window_slot_go_home (slot, FALSE); } @@ -1519,7 +1626,7 @@ nautilus_window_back_or_forward (NautilusWindow *window, GFile *old_location; slot = nautilus_window_get_active_slot (window); - list = back ? slot->back_list : slot->forward_list; + list = back ? slot->details->back_list : slot->details->forward_list; len = (guint) g_list_length (list); @@ -1577,9 +1684,9 @@ nautilus_window_slot_force_reload (NautilusWindowSlot *slot) g_object_ref (location); current_pos = NULL; selection = NULL; - if (slot->content_view != NULL) { - current_pos = nautilus_view_get_first_visible_file (slot->content_view); - selection = nautilus_view_get_selection (slot->content_view); + if (slot->details->content_view != NULL) { + current_pos = nautilus_view_get_first_visible_file (slot->details->content_view); + selection = nautilus_view_get_selection (slot->details->content_view); } begin_location_change (slot, location, location, selection, @@ -1599,9 +1706,9 @@ nautilus_window_slot_queue_reload (NautilusWindowSlot *slot) return; } - if (slot->pending_location != NULL - || slot->content_view == NULL - || nautilus_view_get_loading (slot->content_view)) { + if (slot->details->pending_location != NULL + || slot->details->content_view == NULL + || nautilus_view_get_loading (slot->details->content_view)) { /* there is a reload in flight */ slot->details->needs_reload = TRUE; return; @@ -1615,8 +1722,8 @@ nautilus_window_slot_clear_forward_list (NautilusWindowSlot *slot) { g_assert (NAUTILUS_IS_WINDOW_SLOT (slot)); - g_list_free_full (slot->forward_list, g_object_unref); - slot->forward_list = NULL; + g_list_free_full (slot->details->forward_list, g_object_unref); + slot->details->forward_list = NULL; } static void @@ -1624,8 +1731,8 @@ nautilus_window_slot_clear_back_list (NautilusWindowSlot *slot) { g_assert (NAUTILUS_IS_WINDOW_SLOT (slot)); - g_list_free_full (slot->back_list, g_object_unref); - slot->back_list = NULL; + g_list_free_full (slot->details->back_list, g_object_unref); + slot->details->back_list = NULL; } static void @@ -1638,11 +1745,11 @@ set_displayed_file (NautilusWindowSlot *slot, NautilusFile *file) new_location = nautilus_file_get_location (file); } - if (slot->current_location_bookmark == NULL || file == NULL) { + if (slot->details->current_location_bookmark == NULL || file == NULL) { recreate = TRUE; } else { GFile *bookmark_location; - bookmark_location = nautilus_bookmark_get_location (slot->current_location_bookmark); + bookmark_location = nautilus_bookmark_get_location (slot->details->current_location_bookmark); recreate = !g_file_equal (bookmark_location, new_location); g_object_unref (bookmark_location); } @@ -1651,16 +1758,16 @@ set_displayed_file (NautilusWindowSlot *slot, NautilusFile *file) char *display_name = NULL; /* We've changed locations, must recreate bookmark for current location. */ - g_clear_object (&slot->last_location_bookmark); + g_clear_object (&slot->details->last_location_bookmark); if (file != NULL) { display_name = nautilus_file_get_display_name (file); } - slot->last_location_bookmark = slot->current_location_bookmark; + slot->details->last_location_bookmark = slot->details->current_location_bookmark; if (new_location == NULL) { - slot->current_location_bookmark = NULL; + slot->details->current_location_bookmark = NULL; } else { - slot->current_location_bookmark = nautilus_bookmark_new (new_location, display_name); + slot->details->current_location_bookmark = nautilus_bookmark_new (new_location, display_name); } g_free (display_name); } @@ -1692,7 +1799,7 @@ check_bookmark_location_matches (NautilusBookmark *bookmark, GFile *location) static void check_last_bookmark_location_matches_slot (NautilusWindowSlot *slot) { - check_bookmark_location_matches (slot->last_location_bookmark, + check_bookmark_location_matches (slot->details->last_location_bookmark, nautilus_window_slot_get_location (slot)); } @@ -1705,9 +1812,9 @@ handle_go_back (NautilusWindowSlot *slot, NautilusBookmark *bookmark; /* Going back. Move items from the back list to the forward list. */ - g_assert (g_list_length (slot->back_list) > slot->location_change_distance); - check_bookmark_location_matches (NAUTILUS_BOOKMARK (g_list_nth_data (slot->back_list, - slot->location_change_distance)), + g_assert (g_list_length (slot->details->back_list) > slot->details->location_change_distance); + check_bookmark_location_matches (NAUTILUS_BOOKMARK (g_list_nth_data (slot->details->back_list, + slot->details->location_change_distance)), location); g_assert (nautilus_window_slot_get_location (slot) != NULL); @@ -1721,17 +1828,17 @@ handle_go_back (NautilusWindowSlot *slot, g_object_ref (slot->details->forward_list->data); /* Move extra links from Back to Forward list */ - for (i = 0; i < slot->location_change_distance; ++i) { - bookmark = NAUTILUS_BOOKMARK (slot->back_list->data); - slot->back_list = - g_list_remove (slot->back_list, bookmark); - slot->forward_list = - g_list_prepend (slot->forward_list, bookmark); + for (i = 0; i < slot->details->location_change_distance; ++i) { + bookmark = NAUTILUS_BOOKMARK (slot->details->back_list->data); + slot->details->back_list = + g_list_remove (slot->details->back_list, bookmark); + slot->details->forward_list = + g_list_prepend (slot->details->forward_list, bookmark); } /* One bookmark falls out of back/forward lists and becomes viewed location */ - link = slot->back_list; - slot->back_list = g_list_remove_link (slot->back_list, link); + link = slot->details->back_list; + slot->details->back_list = g_list_remove_link (slot->details->back_list, link); g_object_unref (link->data); g_list_free_1 (link); } @@ -1745,9 +1852,9 @@ handle_go_forward (NautilusWindowSlot *slot, NautilusBookmark *bookmark; /* Going forward. Move items from the forward list to the back list. */ - g_assert (g_list_length (slot->forward_list) > slot->location_change_distance); - check_bookmark_location_matches (NAUTILUS_BOOKMARK (g_list_nth_data (slot->forward_list, - slot->location_change_distance)), + g_assert (g_list_length (slot->details->forward_list) > slot->details->location_change_distance); + check_bookmark_location_matches (NAUTILUS_BOOKMARK (g_list_nth_data (slot->details->forward_list, + slot->details->location_change_distance)), location); g_assert (nautilus_window_slot_get_location (slot) != NULL); @@ -1760,17 +1867,17 @@ handle_go_forward (NautilusWindowSlot *slot, g_object_ref (slot->details->back_list->data); /* Move extra links from Forward to Back list */ - for (i = 0; i < slot->location_change_distance; ++i) { - bookmark = NAUTILUS_BOOKMARK (slot->forward_list->data); - slot->forward_list = - g_list_remove (slot->back_list, bookmark); - slot->back_list = - g_list_prepend (slot->forward_list, bookmark); + for (i = 0; i < slot->details->location_change_distance; ++i) { + bookmark = NAUTILUS_BOOKMARK (slot->details->forward_list->data); + slot->details->forward_list = + g_list_remove (slot->details->back_list, bookmark); + slot->details->back_list = + g_list_prepend (slot->details->forward_list, bookmark); } /* One bookmark falls out of back/forward lists and becomes viewed location */ - link = slot->forward_list; - slot->forward_list = g_list_remove_link (slot->forward_list, link); + link = slot->details->forward_list; + slot->details->forward_list = g_list_remove_link (slot->details->forward_list, link); g_object_unref (link->data); g_list_free_1 (link); } @@ -1794,9 +1901,9 @@ handle_go_elsewhere (NautilusWindowSlot *slot, /* Store bookmark for current location in back list, unless there is no current location */ check_last_bookmark_location_matches_slot (slot); /* Use the first bookmark in the history list rather than creating a new one. */ - slot->back_list = g_list_prepend (slot->back_list, - slot->last_location_bookmark); - g_object_ref (slot->back_list->data); + slot->details->back_list = g_list_prepend (slot->details->back_list, + slot->details->last_location_bookmark); + g_object_ref (slot->details->back_list->data); } } } @@ -1976,13 +2083,13 @@ nautilus_window_slot_update_for_new_location (NautilusWindowSlot *slot) FindMountData *data; window = nautilus_window_slot_get_window (slot); - new_location = slot->pending_location; - slot->pending_location = NULL; + new_location = slot->details->pending_location; + slot->details->pending_location = NULL; file = nautilus_file_get (new_location); set_displayed_file (slot, file); - update_history (slot, slot->location_change_type, new_location); + update_history (slot, slot->details->location_change_type, new_location); old_location = nautilus_window_slot_get_location (slot); location_really_changed = @@ -1993,8 +2100,8 @@ nautilus_window_slot_update_for_new_location (NautilusWindowSlot *slot) * if it goes away. */ nautilus_window_slot_set_viewed_file (slot, file); - slot->viewed_file_seen = !nautilus_file_is_not_yet_confirmed (file); - slot->viewed_file_in_trash = nautilus_file_is_in_trash (file); + slot->details->viewed_file_seen = !nautilus_file_is_not_yet_confirmed (file); + slot->details->viewed_file_in_trash = nautilus_file_is_in_trash (file); nautilus_file_unref (file); nautilus_window_slot_emit_location_change (slot, old_location, new_location); @@ -2006,7 +2113,7 @@ nautilus_window_slot_update_for_new_location (NautilusWindowSlot *slot) nautilus_window_sync_zoom_widgets (window); /* Sync the content view menu for this new location. */ - nautilus_window_sync_view_as_menus (window); + nautilus_window_slot_sync_view_as_menus (slot); /* Load menus from nautilus extensions for this location */ nautilus_window_load_extension_menus (window); @@ -2056,10 +2163,9 @@ nautilus_window_slot_update_for_new_location (NautilusWindowSlot *slot) slot_add_extension_extra_widgets (slot); } - if (slot == nautilus_window_get_active_slot (window)) { - if (location_really_changed) { - nautilus_window_sync_search_widgets (window); - } + if (slot == nautilus_window_get_active_slot (window) && + location_really_changed) { + nautilus_window_slot_sync_search_widgets (slot); } } @@ -2074,10 +2180,10 @@ view_end_loading_cb (NautilusView *view, /* Only handle this if we're expecting it. * Don't handle it if its from an old view we've switched from */ - if (view == slot->content_view && all_files_seen) { - if (slot->pending_scroll_to != NULL) { - nautilus_view_scroll_to_file (slot->content_view, - slot->pending_scroll_to); + if (view == slot->details->content_view && all_files_seen) { + if (slot->details->pending_scroll_to != NULL) { + nautilus_view_scroll_to_file (slot->details->content_view, + slot->details->pending_scroll_to); } end_location_change (slot); } @@ -2105,7 +2211,7 @@ real_setup_loading_floating_bar (NautilusWindowSlot *slot) } nautilus_floating_bar_set_primary_label (NAUTILUS_FLOATING_BAR (slot->details->floating_bar), - NAUTILUS_IS_SEARCH_DIRECTORY (nautilus_view_get_model (slot->content_view)) ? + NAUTILUS_IS_SEARCH_DIRECTORY (nautilus_view_get_model (slot->details->content_view)) ? _("Searching...") : _("Loading...")); nautilus_floating_bar_set_details_label (NAUTILUS_FLOATING_BAR (slot->details->floating_bar), NULL); nautilus_floating_bar_set_show_spinner (NAUTILUS_FLOATING_BAR (slot->details->floating_bar), @@ -2157,7 +2263,7 @@ view_begin_loading_cb (NautilusView *view, nautilus_profile_start (NULL); - if (view == slot->new_content_view) { + if (view == slot->details->new_content_view) { location_has_really_changed (slot); } else { nautilus_window_slot_set_allow_stop (slot, TRUE); @@ -2171,15 +2277,15 @@ view_begin_loading_cb (NautilusView *view, static void nautilus_window_slot_connect_new_content_view (NautilusWindowSlot *slot) { - if (slot->content_view != NULL) { + if (slot->details->content_view != NULL) { /* disconnect old view */ - g_signal_handlers_disconnect_by_func (slot->content_view, G_CALLBACK (view_end_loading_cb), slot); - g_signal_handlers_disconnect_by_func (slot->content_view, G_CALLBACK (view_begin_loading_cb), slot); + g_signal_handlers_disconnect_by_func (slot->details->content_view, G_CALLBACK (view_end_loading_cb), slot); + g_signal_handlers_disconnect_by_func (slot->details->content_view, G_CALLBACK (view_begin_loading_cb), slot); } - if (slot->new_content_view != NULL) { - g_signal_connect (slot->new_content_view, "begin-loading", G_CALLBACK (view_begin_loading_cb), slot); - g_signal_connect (slot->new_content_view, "end-loading", G_CALLBACK (view_end_loading_cb), slot); + if (slot->details->new_content_view != NULL) { + g_signal_connect (slot->details->new_content_view, "begin-loading", G_CALLBACK (view_begin_loading_cb), slot); + g_signal_connect (slot->details->new_content_view, "end-loading", G_CALLBACK (view_end_loading_cb), slot); } } @@ -2189,32 +2295,37 @@ nautilus_window_slot_switch_new_content_view (NautilusWindowSlot *slot) NautilusWindow *window; GtkWidget *widget; - if ((slot->new_content_view == NULL) || - gtk_widget_get_parent (GTK_WIDGET (slot->new_content_view)) != NULL) { + if ((slot->details->new_content_view == NULL) || + gtk_widget_get_parent (GTK_WIDGET (slot->details->new_content_view)) != NULL) { return; } window = nautilus_window_slot_get_window (slot); - if (slot->content_view != NULL) { - nautilus_window_disconnect_content_view (window, slot->content_view); + if (slot->details->content_view != NULL) { + nautilus_window_disconnect_content_view (window, slot->details->content_view); - widget = GTK_WIDGET (slot->content_view); + widget = GTK_WIDGET (slot->details->content_view); gtk_widget_destroy (widget); - g_object_unref (slot->content_view); - slot->content_view = NULL; + g_object_unref (slot->details->content_view); + slot->details->content_view = NULL; } - if (slot->new_content_view != NULL) { - slot->content_view = slot->new_content_view; - slot->new_content_view = NULL; + if (slot->details->new_content_view != NULL) { + slot->details->content_view = slot->details->new_content_view; + slot->details->new_content_view = NULL; - widget = GTK_WIDGET (slot->content_view); + widget = GTK_WIDGET (slot->details->content_view); gtk_container_add (GTK_CONTAINER (slot->details->view_overlay), widget); gtk_widget_show (widget); /* connect new view */ - nautilus_window_connect_content_view (slot->details->window, slot->content_view); + nautilus_window_connect_content_view (slot->details->window, slot->details->content_view); + + if (!NAUTILUS_IS_SEARCH_DIRECTORY (nautilus_view_get_model (slot->details->content_view)) && + slot == nautilus_window_get_active_slot (window)) { + nautilus_view_grab_focus (slot->details->content_view); + } } } @@ -2230,7 +2341,7 @@ location_has_really_changed (NautilusWindowSlot *slot) /* Switch to the new content view. */ nautilus_window_slot_switch_new_content_view (slot); - if (slot->pending_location != NULL) { + if (slot->details->pending_location != NULL) { /* Tell the window we are finished. */ nautilus_window_slot_update_for_new_location (slot); } @@ -2268,17 +2379,17 @@ nautilus_window_slot_dispose (GObject *object) nautilus_window_disconnect_content_view (nautilus_window_slot_get_window (slot), slot->details->content_view); - widget = GTK_WIDGET (slot->content_view); + widget = GTK_WIDGET (slot->details->content_view); gtk_widget_destroy (widget); - g_object_unref (slot->content_view); - slot->content_view = NULL; + g_object_unref (slot->details->content_view); + slot->details->content_view = NULL; } - if (slot->new_content_view) { - widget = GTK_WIDGET (slot->new_content_view); + if (slot->details->new_content_view) { + widget = GTK_WIDGET (slot->details->new_content_view); gtk_widget_destroy (widget); - g_object_unref (slot->new_content_view); - slot->new_content_view = NULL; + g_object_unref (slot->details->new_content_view); + slot->details->new_content_view = NULL; } if (slot->details->set_status_timeout_id != 0) { @@ -2294,7 +2405,7 @@ nautilus_window_slot_dispose (GObject *object) nautilus_window_slot_set_viewed_file (slot, NULL); /* TODO? why do we unref here? the file is NULL. * It was already here before the slot move, though */ - nautilus_file_unref (slot->viewed_file); + nautilus_file_unref (slot->details->viewed_file); if (slot->details->location) { /* TODO? why do we ref here, instead of unreffing? @@ -2302,11 +2413,11 @@ nautilus_window_slot_dispose (GObject *object) g_object_ref (slot->details->location); } - g_list_free_full (slot->pending_selection, g_object_unref); - slot->pending_selection = NULL; + g_list_free_full (slot->details->pending_selection, g_object_unref); + slot->details->pending_selection = NULL; - g_clear_object (&slot->current_location_bookmark); - g_clear_object (&slot->last_location_bookmark); + g_clear_object (&slot->details->current_location_bookmark); + g_clear_object (&slot->details->last_location_bookmark); if (slot->details->find_mount_cancellable != NULL) { g_cancellable_cancel (slot->details->find_mount_cancellable); @@ -2420,6 +2531,12 @@ nautilus_window_slot_set_window (NautilusWindowSlot *slot, } } +NautilusView * +nautilus_window_slot_get_view (NautilusWindowSlot *slot) +{ + return slot->details->content_view; +} + /* nautilus_window_slot_update_title: * * Re-calculate the slot title. @@ -2445,8 +2562,7 @@ nautilus_window_slot_update_title (NautilusWindowSlot *slot) title = NULL; } - if (strlen (slot->details->title) > 0 && - slot->current_location_bookmark != NULL) { + if (strlen (slot->details->title) > 0) { do_sync = TRUE; } @@ -2459,6 +2575,12 @@ nautilus_window_slot_update_title (NautilusWindowSlot *slot) } } +gboolean +nautilus_window_slot_get_allow_stop (NautilusWindowSlot *slot) +{ + return slot->details->allow_stop; +} + void nautilus_window_slot_set_allow_stop (NautilusWindowSlot *slot, gboolean allow) @@ -2467,12 +2589,26 @@ nautilus_window_slot_set_allow_stop (NautilusWindowSlot *slot, g_assert (NAUTILUS_IS_WINDOW_SLOT (slot)); - slot->allow_stop = allow; + slot->details->allow_stop = allow; window = nautilus_window_slot_get_window (slot); nautilus_window_sync_allow_stop (window, slot); } +void +nautilus_window_slot_stop_loading (NautilusWindowSlot *slot) +{ + nautilus_view_stop_loading (slot->details->content_view); + + if (slot->details->new_content_view != NULL) { + slot->details->temporarily_ignore_view_signals = TRUE; + nautilus_view_stop_loading (slot->details->new_content_view); + slot->details->temporarily_ignore_view_signals = FALSE; + } + + cancel_location_change (slot); +} + static void real_slot_set_short_status (NautilusWindowSlot *slot, const gchar *primary_status, @@ -2542,7 +2678,7 @@ set_floating_bar_status (NautilusWindowSlot *slot, slot->details->set_status_timeout_id = 0; } - settings = gtk_settings_get_for_screen (gtk_widget_get_screen (GTK_WIDGET (slot->content_view))); + settings = gtk_settings_get_for_screen (gtk_widget_get_screen (GTK_WIDGET (slot->details->content_view))); g_object_get (settings, "gtk-double-click-time", &double_click_time, NULL); @@ -2571,7 +2707,7 @@ nautilus_window_slot_set_status (NautilusWindowSlot *slot, { g_assert (NAUTILUS_IS_WINDOW_SLOT (slot)); - if (slot->content_view != NULL) { + if (slot->details->content_view != NULL) { set_floating_bar_status (slot, primary_status, detail_status); } } @@ -2580,25 +2716,24 @@ nautilus_window_slot_set_status (NautilusWindowSlot *slot, char * nautilus_window_slot_get_current_uri (NautilusWindowSlot *slot) { - if (slot->pending_location != NULL) { - return g_file_get_uri (slot->pending_location); + if (slot->details->pending_location != NULL) { + return g_file_get_uri (slot->details->pending_location); } if (slot->details->location != NULL) { return g_file_get_uri (slot->details->location); } - g_assert_not_reached (); return NULL; } NautilusView * nautilus_window_slot_get_current_view (NautilusWindowSlot *slot) { - if (slot->content_view != NULL) { - return slot->content_view; - } else if (slot->new_content_view) { - return slot->new_content_view; + if (slot->details->content_view != NULL) { + return slot->details->content_view; + } else if (slot->details->new_content_view) { + return slot->details->new_content_view; } return NULL; @@ -2636,14 +2771,28 @@ nautilus_window_slot_go_up (NautilusWindowSlot *slot, g_object_unref (parent); } -gboolean -nautilus_window_slot_content_view_matches_iid (NautilusWindowSlot *slot, - const char *iid) +NautilusFile * +nautilus_window_slot_get_file (NautilusWindowSlot *slot) { - if (slot->content_view == NULL) { - return FALSE; - } - return g_strcmp0 (nautilus_view_get_view_id (slot->content_view), iid) == 0; + return slot->details->viewed_file; +} + +NautilusBookmark * +nautilus_window_slot_get_bookmark (NautilusWindowSlot *slot) +{ + return slot->details->current_location_bookmark; +} + +GList * +nautilus_window_slot_get_back_history (NautilusWindowSlot *slot) +{ + return slot->details->back_list; +} + +GList * +nautilus_window_slot_get_forward_history (NautilusWindowSlot *slot) +{ + return slot->details->forward_list; } NautilusWindowSlot * diff --git a/src/nautilus-window-slot.h b/src/nautilus-window-slot.h index 7a7c14c90..47abbc916 100644 --- a/src/nautilus-window-slot.h +++ b/src/nautilus-window-slot.h @@ -60,98 +60,67 @@ struct NautilusWindowSlot { GtkBox parent; NautilusWindowSlotDetails *details; - - NautilusView *content_view; - NautilusView *new_content_view; - - /* Information about bookmarks */ - NautilusBookmark *current_location_bookmark; - NautilusBookmark *last_location_bookmark; - - NautilusFile *viewed_file; - gboolean viewed_file_seen; - gboolean viewed_file_in_trash; - - gboolean allow_stop; - - NautilusQueryEditor *query_editor; - gulong qe_changed_id; - gulong qe_cancel_id; - gulong qe_activated_id; - - /* New location. */ - NautilusLocationChangeType location_change_type; - guint location_change_distance; - GFile *pending_location; - char *pending_scroll_to; - GList *pending_selection; - NautilusFile *determine_view_file; - GCancellable *mount_cancellable; - GError *mount_error; - gboolean tried_mount; - NautilusWindowGoToCallback open_callback; - gpointer open_callback_user_data; - gboolean load_with_search; - - gboolean visible; - - /* Back/Forward chain, and history list. - * The data in these lists are NautilusBookmark pointers. - */ - GList *back_list, *forward_list; }; GType nautilus_window_slot_get_type (void); -NautilusWindowSlot * nautilus_window_slot_new (NautilusWindow *window); +NautilusWindowSlot * nautilus_window_slot_new (NautilusWindow *window); NautilusWindow * nautilus_window_slot_get_window (NautilusWindowSlot *slot); void nautilus_window_slot_set_window (NautilusWindowSlot *slot, NautilusWindow *window); -void nautilus_window_slot_update_title (NautilusWindowSlot *slot); -void nautilus_window_slot_set_query_editor_visible (NautilusWindowSlot *slot, - gboolean visible); -gboolean nautilus_window_slot_handle_event (NautilusWindowSlot *slot, - GdkEventKey *event); +/* convenience wrapper without selection and callback/user_data */ +#define nautilus_window_slot_open_location(slot, location, flags)\ + nautilus_window_slot_open_location_full(slot, location, flags, NULL, NULL, NULL) + +void nautilus_window_slot_open_location_full (NautilusWindowSlot *slot, + GFile *location, + NautilusWindowOpenFlags flags, + GList *new_selection, + NautilusWindowGoToCallback callback, + gpointer user_data); GFile * nautilus_window_slot_get_location (NautilusWindowSlot *slot); char * nautilus_window_slot_get_location_uri (NautilusWindowSlot *slot); -const gchar *nautilus_window_slot_get_title (NautilusWindowSlot *slot); +NautilusFile * nautilus_window_slot_get_file (NautilusWindowSlot *slot); +NautilusBookmark *nautilus_window_slot_get_bookmark (NautilusWindowSlot *slot); +NautilusView * nautilus_window_slot_get_view (NautilusWindowSlot *slot); -void nautilus_window_slot_queue_reload (NautilusWindowSlot *slot); +NautilusView * nautilus_window_slot_get_current_view (NautilusWindowSlot *slot); +char * nautilus_window_slot_get_current_uri (NautilusWindowSlot *slot); -/* convenience wrapper without selection and callback/user_data */ -#define nautilus_window_slot_open_location(slot, location, flags)\ - nautilus_window_slot_open_location_full(slot, location, flags, NULL, NULL, NULL) +GList * nautilus_window_slot_get_back_history (NautilusWindowSlot *slot); +GList * nautilus_window_slot_get_forward_history (NautilusWindowSlot *slot); + +void nautilus_window_slot_set_query_editor_visible (NautilusWindowSlot *slot, + gboolean visible); +GFile * nautilus_window_slot_get_query_editor_location (NautilusWindowSlot *slot); + +gboolean nautilus_window_slot_get_allow_stop (NautilusWindowSlot *slot); +void nautilus_window_slot_set_allow_stop (NautilusWindowSlot *slot, + gboolean allow_stop); +void nautilus_window_slot_stop_loading (NautilusWindowSlot *slot); -void nautilus_window_slot_open_location_full (NautilusWindowSlot *slot, - GFile *location, - NautilusWindowOpenFlags flags, - GList *new_selection, /* NautilusFile list */ - NautilusWindowGoToCallback callback, - gpointer user_data); +const gchar *nautilus_window_slot_get_title (NautilusWindowSlot *slot); +void nautilus_window_slot_update_title (NautilusWindowSlot *slot); + +gboolean nautilus_window_slot_handle_event (NautilusWindowSlot *slot, + GdkEventKey *event); -void nautilus_window_slot_stop_loading (NautilusWindowSlot *slot); +void nautilus_window_slot_queue_reload (NautilusWindowSlot *slot); -void nautilus_window_slot_set_content_view (NautilusWindowSlot *slot, - const char *id); -gboolean nautilus_window_slot_content_view_matches_iid (NautilusWindowSlot *slot, - const char *iid); +void nautilus_window_slot_set_content_view (NautilusWindowSlot *slot, + const char *id); void nautilus_window_slot_go_home (NautilusWindowSlot *slot, NautilusWindowOpenFlags flags); void nautilus_window_slot_go_up (NautilusWindowSlot *slot, NautilusWindowOpenFlags flags); -void nautilus_window_slot_set_allow_stop (NautilusWindowSlot *slot, - gboolean allow_stop); void nautilus_window_slot_set_status (NautilusWindowSlot *slot, const char *primary_status, const char *detail_status); -NautilusView * nautilus_window_slot_get_current_view (NautilusWindowSlot *slot); -char * nautilus_window_slot_get_current_uri (NautilusWindowSlot *slot); - #endif /* NAUTILUS_WINDOW_SLOT_H */ diff --git a/src/nautilus-window.c b/src/nautilus-window.c index 2557e1b5c..e94fbba74 100644 --- a/src/nautilus-window.c +++ b/src/nautilus-window.c @@ -205,8 +205,11 @@ remember_focus_widget (NautilusWindow *window) void nautilus_window_grab_focus (NautilusWindow *window) { - if (NAUTILUS_IS_WINDOW (window) && window->details->active_slot) { - nautilus_view_grab_focus (window->details->active_slot->content_view); + NautilusWindowSlot *slot; + + slot = nautilus_window_get_active_slot (window); + if (slot) { + nautilus_view_grab_focus (nautilus_window_slot_get_view (slot)); } } @@ -284,17 +287,16 @@ nautilus_window_set_search_visible (NautilusWindow *window, restore_focus_widget (window); /* Use the location bar as the return location */ - if (slot->query_editor != NULL) { - location = nautilus_query_editor_get_location (slot->query_editor); - /* Last try: use the home directory as the return location */ - if (location == NULL) { - location = g_file_new_for_path (g_get_home_dir ()); - } + location = nautilus_window_slot_get_query_editor_location (slot); - nautilus_window_go_to (window, location); - g_object_unref (location); + /* Last try: use the home directory as the return location */ + if (location == NULL) { + location = g_file_new_for_path (g_get_home_dir ()); } + nautilus_window_go_to (window, location); + g_object_unref (location); + nautilus_window_slot_set_query_editor_visible (slot, FALSE); } } @@ -400,7 +402,7 @@ update_cursor (NautilusWindow *window) slot = nautilus_window_get_active_slot (window); - if (slot->allow_stop) { + if (nautilus_window_slot_get_allow_stop (slot)) { cursor = gdk_cursor_new (GDK_WATCH); gdk_window_set_cursor (gtk_widget_get_window (GTK_WIDGET (window)), cursor); g_object_unref (cursor); @@ -415,7 +417,7 @@ nautilus_window_sync_allow_stop (NautilusWindow *window, { GtkAction *stop_action; GtkAction *reload_action; - gboolean allow_stop, slot_is_active; + gboolean allow_stop, slot_is_active, slot_allow_stop; stop_action = gtk_action_group_get_action (nautilus_window_get_main_action_group (window), NAUTILUS_ACTION_STOP); @@ -423,13 +425,14 @@ nautilus_window_sync_allow_stop (NautilusWindow *window, NAUTILUS_ACTION_RELOAD); allow_stop = gtk_action_get_sensitive (stop_action); + slot_allow_stop = nautilus_window_slot_get_allow_stop (slot); slot_is_active = (slot == nautilus_window_get_active_slot (window)); if (!slot_is_active || - allow_stop != slot->allow_stop) { + allow_stop != slot_allow_stop) { if (slot_is_active) { - gtk_action_set_visible (stop_action, slot->allow_stop); - gtk_action_set_visible (reload_action, !slot->allow_stop); + gtk_action_set_visible (stop_action, slot_allow_stop); + gtk_action_set_visible (reload_action, !slot_allow_stop); } if (gtk_widget_get_realized (GTK_WIDGET (window))) { @@ -691,46 +694,6 @@ nautilus_window_sync_bookmarks (NautilusWindow *window) gtk_action_set_sensitive (action, can_bookmark); } -static void -toggle_toolbar_search_button (NautilusWindow *window, - gboolean active) -{ - GtkAction *action; - - action = gtk_action_group_get_action (nautilus_window_get_main_action_group (window), - NAUTILUS_ACTION_SEARCH); - - gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), active); -} - -void -nautilus_window_sync_search_widgets (NautilusWindow *window) -{ - NautilusDirectory *directory; - NautilusSearchDirectory *search_directory; - NautilusWindowSlot *slot; - GFile *location; - - search_directory = NULL; - slot = window->details->active_slot; - location = nautilus_window_slot_get_location (slot); - - directory = nautilus_directory_get (location); - if (NAUTILUS_IS_SEARCH_DIRECTORY (directory)) { - search_directory = NAUTILUS_SEARCH_DIRECTORY (directory); - } - - if (search_directory != NULL || slot->load_with_search || - gtk_widget_get_visible (GTK_WIDGET (slot->query_editor))) { - slot->load_with_search = FALSE; - toggle_toolbar_search_button (window, TRUE); - } else { - toggle_toolbar_search_button (window, FALSE); - } - - nautilus_directory_unref (directory); -} - void nautilus_window_sync_location_widgets (NautilusWindow *window) { @@ -761,10 +724,10 @@ nautilus_window_sync_location_widgets (NautilusWindow *window) action_group = nautilus_window_get_main_action_group (window); action = gtk_action_group_get_action (action_group, NAUTILUS_ACTION_BACK); - gtk_action_set_sensitive (action, active_slot->back_list != NULL); + gtk_action_set_sensitive (action, nautilus_window_slot_get_back_history (active_slot) != NULL); action = gtk_action_group_get_action (action_group, NAUTILUS_ACTION_FORWARD); - gtk_action_set_sensitive (action, active_slot->forward_list != NULL); + gtk_action_set_sensitive (action, nautilus_window_slot_get_forward_history (active_slot) != NULL); nautilus_window_sync_bookmarks (window); } @@ -794,7 +757,7 @@ path_bar_location_changed_callback (GtkWidget *widget, slot = window->details->active_slot; /* check whether we already visited the target location */ - i = bookmark_list_get_uri_index (slot->back_list, location); + i = bookmark_list_get_uri_index (nautilus_window_slot_get_back_history (slot), location); if (i >= 0) { nautilus_window_back_or_forward (window, TRUE, i, 0); } else { @@ -830,7 +793,7 @@ path_bar_path_event_callback (NautilusPathBar *path_bar, } } else if (event->button == 3) { slot = nautilus_window_get_active_slot (window); - view = slot->content_view; + view = nautilus_window_slot_get_view (slot); if (view != NULL) { uri = g_file_get_uri (location); nautilus_view_pop_up_location_context_menu (view, event, uri); @@ -1361,19 +1324,23 @@ nautilus_window_view_visible (NautilusWindow *window, g_return_if_fail (NAUTILUS_IS_WINDOW (window)); - slot = nautilus_window_get_slot_for_view (window, view); - - if (slot->visible) { + /* FIXME: this code is odd and should not really be needed, but + * removing it causes bugs, see e.g. + * https://bugzilla.gnome.org/show_bug.cgi?id=679640 + * + * Needs more investigation... + */ + slot = nautilus_view_get_nautilus_window_slot (view); + if (g_object_get_data (G_OBJECT (slot), "nautilus-window-view-visible") != NULL) { return; } - slot->visible = TRUE; + g_object_set_data (G_OBJECT (slot), "nautilus-window-view-visible", GINT_TO_POINTER (1)); /* Look for other non-visible slots */ for (l = window->details->slots; l != NULL; l = l->next) { slot = l->data; - - if (!slot->visible) { + if (g_object_get_data (G_OBJECT (slot), "nautilus-window-view-visible") == NULL) { return; } } @@ -1381,7 +1348,6 @@ nautilus_window_view_visible (NautilusWindow *window, /* Look for other non-visible slots */ for (l = window->details->slots; l != NULL; l = l->next) { slot = l->data; - nautilus_window_slot_update_title (slot); } @@ -1431,25 +1397,12 @@ static void nautilus_window_report_location_change (NautilusWindow *window) { NautilusWindowSlot *slot; - GFile *location; + gchar *uri; slot = nautilus_window_get_active_slot (window); - g_assert (NAUTILUS_IS_WINDOW_SLOT (slot)); - - location = NULL; - - if (slot->pending_location != NULL) { - location = slot->pending_location; - } - - if (location == NULL) { - location = nautilus_window_slot_get_location (slot); - } - - if (location != NULL) { - char *uri; + uri = nautilus_window_slot_get_current_uri (slot); - uri = g_file_get_uri (location); + if (uri != NULL) { g_signal_emit_by_name (window, "loading-uri", uri); g_free (uri); } @@ -1459,6 +1412,7 @@ void nautilus_window_set_active_slot (NautilusWindow *window, NautilusWindowSlot *new_slot) { NautilusWindowSlot *old_slot; + NautilusView *view; g_assert (NAUTILUS_IS_WINDOW (window)); @@ -1476,9 +1430,10 @@ nautilus_window_set_active_slot (NautilusWindow *window, NautilusWindowSlot *new /* make old slot inactive if it exists (may be NULL after init, for example) */ if (old_slot != NULL) { - /* inform window */ - if (old_slot->content_view != NULL) { - nautilus_window_disconnect_content_view (window, old_slot->content_view); + view = nautilus_window_slot_get_view (old_slot); + if (view != NULL) { + /* inform window */ + nautilus_window_disconnect_content_view (window, view); } /* inform slot & view */ @@ -1489,15 +1444,15 @@ nautilus_window_set_active_slot (NautilusWindow *window, NautilusWindowSlot *new /* make new slot active, if it exists */ if (new_slot) { - /* inform sidebar panels */ - nautilus_window_report_location_change (window); - /* TODO decide whether "selection-changed" should be emitted */ - - if (new_slot->content_view != NULL) { + view = nautilus_window_slot_get_view (new_slot); + if (view != NULL) { /* inform window */ - nautilus_window_connect_content_view (window, new_slot->content_view); + nautilus_window_connect_content_view (window, view); } + /* inform sidebar panels */ + nautilus_window_report_location_change (window); + /* inform slot & view */ g_signal_emit_by_name (new_slot, "active"); } @@ -1562,7 +1517,7 @@ nautilus_window_key_press_event (GtkWidget *widget, window = NAUTILUS_WINDOW (widget); active_slot = nautilus_window_get_active_slot (window); - view = active_slot->content_view; + view = nautilus_window_slot_get_view (active_slot); if (view != NULL && nautilus_view_get_is_renaming (view)) { /* if we're renaming, just forward the event to the @@ -1614,60 +1569,12 @@ nautilus_window_key_press_event (GtkWidget *widget, } if (nautilus_window_slot_handle_event (window->details->active_slot, event)) { - toggle_toolbar_search_button (window, TRUE); return TRUE; } return FALSE; } -/* - * Main API - */ - -static void -real_sync_view_as_menus (NautilusWindow *window) -{ - NautilusWindowSlot *slot; - GtkActionGroup *action_group; - GtkAction *action; - - g_assert (NAUTILUS_IS_WINDOW (window)); - - slot = nautilus_window_get_active_slot (window); - - if (slot->content_view == NULL || slot->new_content_view != NULL) { - return; - } - - action_group = nautilus_window_get_main_action_group (window); - - if (nautilus_window_slot_content_view_matches_iid (slot, NAUTILUS_LIST_VIEW_ID)) { - action = gtk_action_group_get_action (action_group, NAUTILUS_ACTION_VIEW_LIST); - } else { - action = gtk_action_group_get_action (action_group, NAUTILUS_ACTION_VIEW_GRID); - } - - gtk_toggle_action_set_active (GTK_TOGGLE_ACTION (action), TRUE); -} - -/** - * nautilus_window_sync_view_as_menus: - * - * Set the visible item of the "View as" option menu and - * the marked "View as" item in the View menu to - * match the current content view. - * - * @window: The NautilusWindow whose "View as" option menu should be synched. - */ -void -nautilus_window_sync_view_as_menus (NautilusWindow *window) -{ - if (NAUTILUS_WINDOW_CLASS (G_OBJECT_GET_CLASS (window))->sync_view_as_menus != NULL) { - NAUTILUS_WINDOW_CLASS (G_OBJECT_GET_CLASS (window))->sync_view_as_menus (window); - } -} - void nautilus_window_sync_up_button (NautilusWindow *window) { @@ -1724,7 +1631,7 @@ nautilus_window_sync_zoom_widgets (NautilusWindow *window) NautilusZoomLevel zoom_level; slot = nautilus_window_get_active_slot (window); - view = slot->content_view; + view = nautilus_window_slot_get_view (slot); if (view != NULL) { supports_zooming = nautilus_view_supports_zooming (view); @@ -1783,12 +1690,11 @@ nautilus_window_connect_content_view (NautilusWindow *window, NautilusView *view) { NautilusWindowSlot *slot; - NautilusDirectory *directory; g_assert (NAUTILUS_IS_WINDOW (window)); g_assert (NAUTILUS_IS_VIEW (view)); - slot = nautilus_window_get_slot_for_view (window, view); + slot = nautilus_view_get_nautilus_window_slot (view); if (slot != nautilus_window_get_active_slot (window)) { return; @@ -1800,22 +1706,6 @@ nautilus_window_connect_content_view (NautilusWindow *window, /* See the comment in notebook_page_added_cb() */ notebook_num_pages_changed (window); - - /* Update displayed view in menu. Only do this if we're not switching - * locations though, because if we are switching locations we'll - * install a whole new set of views in the menu later (the current - * views in the menu are for the old location). - */ - if (slot->pending_location == NULL) { - nautilus_window_sync_view_as_menus (window); - } else { - directory = nautilus_directory_get (slot->pending_location); - if (!NAUTILUS_IS_SEARCH_DIRECTORY (directory)) { - nautilus_view_grab_focus (view); - } - - nautilus_directory_unref (directory); - } } void @@ -1827,7 +1717,7 @@ nautilus_window_disconnect_content_view (NautilusWindow *window, g_assert (NAUTILUS_IS_WINDOW (window)); g_assert (NAUTILUS_IS_VIEW (view)); - slot = nautilus_window_get_slot_for_view (window, view); + slot = nautilus_view_get_nautilus_window_slot (view); if (slot != nautilus_window_get_active_slot (window)) { return; @@ -1878,27 +1768,6 @@ nautilus_window_get_main_action_group (NautilusWindow *window) } NautilusWindowSlot * -nautilus_window_get_slot_for_view (NautilusWindow *window, - NautilusView *view) -{ - NautilusWindowSlot *slot; - GList *l; - - slot = NULL; - for (l = window->details->slots; l; l = l->next) { - NautilusWindowSlot *tmp = l->data; - - if (tmp->content_view == view || - tmp->new_content_view == view) { - slot = tmp; - break; - } - } - - return slot; -} - -NautilusWindowSlot * nautilus_window_get_active_slot (NautilusWindow *window) { g_assert (NAUTILUS_IS_WINDOW (window)); @@ -2020,15 +1889,6 @@ nautilus_window_init (NautilusWindow *window) gtk_window_set_hide_titlebar_when_maximized (GTK_WINDOW (window), TRUE); } -static NautilusIconInfo * -real_get_icon (NautilusWindow *window, - NautilusWindowSlot *slot) -{ - return nautilus_file_get_icon (slot->viewed_file, 48, - NAUTILUS_FILE_ICON_FLAGS_IGNORE_VISITING | - NAUTILUS_FILE_ICON_FLAGS_USE_MOUNT_ICON); -} - static void real_window_close (NautilusWindow *window) { @@ -2060,9 +1920,7 @@ nautilus_window_class_init (NautilusWindowClass *class) wclass->button_press_event = nautilus_window_button_press_event; wclass->delete_event = nautilus_window_delete_event; - class->get_icon = real_get_icon; class->close = real_window_close; - class->sync_view_as_menus = real_sync_view_as_menus; properties[PROP_DISABLE_CHROME] = g_param_spec_boolean ("disable-chrome", diff --git a/src/nautilus-window.h b/src/nautilus-window.h index 748132c1d..6bcf477e8 100644 --- a/src/nautilus-window.h +++ b/src/nautilus-window.h @@ -72,7 +72,6 @@ typedef struct { void (* sync_title) (NautilusWindow *window, NautilusWindowSlot *slot); - void (* sync_view_as_menus) (NautilusWindow *window); NautilusIconInfo * (* get_icon) (NautilusWindow *window, NautilusWindowSlot *slot); @@ -118,7 +117,6 @@ void nautilus_window_slot_close (NautilusWindow *wind GtkWidget * nautilus_window_ensure_location_entry (NautilusWindow *window); void nautilus_window_sync_location_widgets (NautilusWindow *window); void nautilus_window_grab_focus (NautilusWindow *window); -void nautilus_window_sync_search_widgets (NautilusWindow *window); void nautilus_window_hide_sidebar (NautilusWindow *window); void nautilus_window_show_sidebar (NautilusWindow *window); |