diff options
Diffstat (limited to 'src/nautilus-window-slot.c')
-rw-r--r-- | src/nautilus-window-slot.c | 4012 |
1 files changed, 2151 insertions, 1861 deletions
diff --git a/src/nautilus-window-slot.c b/src/nautilus-window-slot.c index af2eadf96..55d721486 100644 --- a/src/nautilus-window-slot.c +++ b/src/nautilus-window-slot.c @@ -1,23 +1,23 @@ /* - nautilus-window-slot.c: Nautilus window slot - - Copyright (C) 2008 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or - modify it under the terms of the GNU General Public License as - published by the Free Software Foundation; either version 2 of the - License, or (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - General Public License for more details. - - You should have received a copy of the GNU General Public - License along with this program; if not, see <http://www.gnu.org/licenses/>. - - Author: Christian Neumair <cneumair@gnome.org> -*/ + * nautilus-window-slot.c: Nautilus window slot + * + * Copyright (C) 2008 Free Software Foundation, Inc. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License as + * published by the Free Software Foundation; either version 2 of the + * License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public + * License along with this program; if not, see <http://www.gnu.org/licenses/>. + * + * Author: Christian Neumair <cneumair@gnome.org> + */ #include "config.h" @@ -44,79 +44,82 @@ #include "nautilus-profile.h" #include <libnautilus-extension/nautilus-location-widget-provider.h> -enum { - ACTIVE, - INACTIVE, - LAST_SIGNAL +enum +{ + ACTIVE, + INACTIVE, + LAST_SIGNAL }; -enum { - PROP_ACTIVE = 1, - PROP_WINDOW, - PROP_ICON, - PROP_TOOLBAR_MENU_SECTIONS, - PROP_LOADING, - PROP_LOCATION, - NUM_PROPERTIES +enum +{ + PROP_ACTIVE = 1, + PROP_WINDOW, + PROP_ICON, + PROP_TOOLBAR_MENU_SECTIONS, + PROP_LOADING, + PROP_LOCATION, + NUM_PROPERTIES }; -typedef struct { - NautilusWindow *window; - - gboolean active : 1; - guint loading : 1; - - /* slot contains - * 1) an vbox containing extra_location_widgets - * 2) the view - */ - GtkWidget *extra_location_widgets; - - /* Slot actions */ - GActionGroup *slot_action_group; - - /* Current location. */ - 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; - /* It could be either the view is loading the files or the search didn't - * finish. Used for showing a spinner to provide feedback to the user. */ - gboolean allow_stop; - gboolean needs_reload; - gchar *pending_search_text; - - /* 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; - gint view_mode_before_search; +typedef struct +{ + NautilusWindow *window; + + gboolean active : 1; + guint loading : 1; + + /* slot contains + * 1) an vbox containing extra_location_widgets + * 2) the view + */ + GtkWidget *extra_location_widgets; + + /* Slot actions */ + GActionGroup *slot_action_group; + + /* Current location. */ + 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; + /* It could be either the view is loading the files or the search didn't + * finish. Used for showing a spinner to provide feedback to the user. */ + gboolean allow_stop; + gboolean needs_reload; + gchar *pending_search_text; + + /* 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; + gint view_mode_before_search; } NautilusWindowSlotPrivate; G_DEFINE_TYPE_WITH_PRIVATE (NautilusWindowSlot, nautilus_window_slot, GTK_TYPE_BOX); @@ -130,11 +133,15 @@ static void hide_query_editor (NautilusWindowSlot *self); static void nautilus_window_slot_sync_actions (NautilusWindowSlot *self); static void nautilus_window_slot_connect_new_content_view (NautilusWindowSlot *self); static void nautilus_window_slot_disconnect_content_view (NautilusWindowSlot *self); -static gboolean nautilus_window_slot_content_view_matches (NautilusWindowSlot *self, guint id); -static NautilusView* nautilus_window_slot_get_view_for_location (NautilusWindowSlot *self, GFile *location); -static void nautilus_window_slot_set_content_view (NautilusWindowSlot *self, guint id); -static void nautilus_window_slot_set_loading (NautilusWindowSlot *self, gboolean loading); -char * nautilus_window_slot_get_location_uri (NautilusWindowSlot *self); +static gboolean nautilus_window_slot_content_view_matches (NautilusWindowSlot *self, + guint id); +static NautilusView *nautilus_window_slot_get_view_for_location (NautilusWindowSlot *self, + GFile *location); +static void nautilus_window_slot_set_content_view (NautilusWindowSlot *self, + guint id); +static void nautilus_window_slot_set_loading (NautilusWindowSlot *self, + gboolean loading); +char *nautilus_window_slot_get_location_uri (NautilusWindowSlot *self); static void nautilus_window_slot_set_search_visible (NautilusWindowSlot *self, gboolean visible); static gboolean nautilus_window_slot_get_search_visible (NautilusWindowSlot *self); @@ -144,556 +151,633 @@ gboolean nautilus_window_slot_handles_location (NautilusWindowSlot *self, GFile *location) { - return NAUTILUS_WINDOW_SLOT_CLASS (G_OBJECT_GET_CLASS (self))->handles_location (self, location); + return NAUTILUS_WINDOW_SLOT_CLASS (G_OBJECT_GET_CLASS (self))->handles_location (self, location); } static gboolean real_handles_location (NautilusWindowSlot *self, GFile *location) { - NautilusFile *file; - gboolean handles_location; + NautilusFile *file; + gboolean handles_location; - file = nautilus_file_get (location); - handles_location = !nautilus_file_is_other_locations (file) && - !nautilus_file_is_desktop_directory (file); - nautilus_file_unref (file); + file = nautilus_file_get (location); + handles_location = !nautilus_file_is_other_locations (file) && + !nautilus_file_is_desktop_directory (file); + nautilus_file_unref (file); - return handles_location; + return handles_location; } -static NautilusView* +static NautilusView * nautilus_window_slot_get_view_for_location (NautilusWindowSlot *self, GFile *location) { - return NAUTILUS_WINDOW_SLOT_CLASS (G_OBJECT_GET_CLASS (self))->get_view_for_location (self, location); + return NAUTILUS_WINDOW_SLOT_CLASS (G_OBJECT_GET_CLASS (self))->get_view_for_location (self, location); } -static NautilusView* +static NautilusView * real_get_view_for_location (NautilusWindowSlot *self, GFile *location) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - NautilusView *view; - NautilusFile *file; + NautilusView *view; + NautilusFile *file; - priv = nautilus_window_slot_get_instance_private (self); - file = nautilus_file_get (location); - view = NULL; - guint view_id; - - view_id = NAUTILUS_VIEW_INVALID_ID; - - /* If we are in search, try to use by default list view. */ - if (nautilus_file_is_in_search (file)) { - /* If it's already set, is because we already made the change to search mode, - * so the view mode of the current view will be the one search is using, - * which is not the one we are interested in */ - if (priv->view_mode_before_search == NAUTILUS_VIEW_INVALID_ID) { - priv->view_mode_before_search = nautilus_files_view_get_view_id (NAUTILUS_FILES_VIEW (priv->content_view)); - } - view_id = g_settings_get_enum (nautilus_preferences, NAUTILUS_PREFERENCES_SEARCH_VIEW); - } else if (priv->content_view != NULL) { - /* If there is already a view, just use the view mode that it's currently using, or - * if we were on search before, use what we were using before entering - * search mode */ - if (priv->view_mode_before_search != NAUTILUS_VIEW_INVALID_ID) { - view_id = priv->view_mode_before_search; - priv->view_mode_before_search = NAUTILUS_VIEW_INVALID_ID; - } else { - view_id = nautilus_files_view_get_view_id (NAUTILUS_FILES_VIEW (priv->content_view)); - } + priv = nautilus_window_slot_get_instance_private (self); + file = nautilus_file_get (location); + view = NULL; + guint view_id; - } + view_id = NAUTILUS_VIEW_INVALID_ID; - /* If there is not previous view in this slot, use the default view mode - * from preferences */ - if (view_id == NAUTILUS_VIEW_INVALID_ID) { - view_id = g_settings_get_enum (nautilus_preferences, NAUTILUS_PREFERENCES_DEFAULT_FOLDER_VIEWER); + /* If we are in search, try to use by default list view. */ + if (nautilus_file_is_in_search (file)) + { + /* If it's already set, is because we already made the change to search mode, + * so the view mode of the current view will be the one search is using, + * which is not the one we are interested in */ + if (priv->view_mode_before_search == NAUTILUS_VIEW_INVALID_ID) + { + priv->view_mode_before_search = nautilus_files_view_get_view_id (NAUTILUS_FILES_VIEW (priv->content_view)); } - - /* Try to reuse the current view */ - if (nautilus_window_slot_content_view_matches (self, view_id)) { - view = priv->content_view; - } else { - view = NAUTILUS_VIEW (nautilus_files_view_new (view_id, self)); + view_id = g_settings_get_enum (nautilus_preferences, NAUTILUS_PREFERENCES_SEARCH_VIEW); + } + else if (priv->content_view != NULL) + { + /* If there is already a view, just use the view mode that it's currently using, or + * if we were on search before, use what we were using before entering + * search mode */ + if (priv->view_mode_before_search != NAUTILUS_VIEW_INVALID_ID) + { + view_id = priv->view_mode_before_search; + priv->view_mode_before_search = NAUTILUS_VIEW_INVALID_ID; + } + else + { + view_id = nautilus_files_view_get_view_id (NAUTILUS_FILES_VIEW (priv->content_view)); } + } - nautilus_file_unref (file); + /* If there is not previous view in this slot, use the default view mode + * from preferences */ + if (view_id == NAUTILUS_VIEW_INVALID_ID) + { + view_id = g_settings_get_enum (nautilus_preferences, NAUTILUS_PREFERENCES_DEFAULT_FOLDER_VIEWER); + } - return view; + /* Try to reuse the current view */ + if (nautilus_window_slot_content_view_matches (self, view_id)) + { + view = priv->content_view; + } + else + { + view = NAUTILUS_VIEW (nautilus_files_view_new (view_id, self)); + } + + nautilus_file_unref (file); + + return view; } static gboolean nautilus_window_slot_content_view_matches (NautilusWindowSlot *self, - guint id) + guint id) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - priv = nautilus_window_slot_get_instance_private (self); - if (priv->content_view == NULL) { - return FALSE; - } + priv = nautilus_window_slot_get_instance_private (self); + if (priv->content_view == NULL) + { + return FALSE; + } - if (id != NAUTILUS_VIEW_INVALID_ID && NAUTILUS_IS_FILES_VIEW (priv->content_view)) { - return nautilus_files_view_get_view_id (NAUTILUS_FILES_VIEW (priv->content_view)) == id; - } else { - return FALSE; - } + if (id != NAUTILUS_VIEW_INVALID_ID && NAUTILUS_IS_FILES_VIEW (priv->content_view)) + { + return nautilus_files_view_get_view_id (NAUTILUS_FILES_VIEW (priv->content_view)) == id; + } + else + { + return FALSE; + } } static void update_search_visible (NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; - NautilusQuery *query; - NautilusView *view; - - priv = nautilus_window_slot_get_instance_private (self); - - view = nautilus_window_slot_get_current_view (self); - /* If we changed location just to another search location, for example, - * when changing the query, just keep the search visible. - * Make sure the search is visible though, since we could be returning - * from a previous search location when using the history */ - if (nautilus_view_is_searching (view)) { - nautilus_window_slot_set_search_visible (self, TRUE); - return; - } - - query = nautilus_query_editor_get_query (priv->query_editor); - if (query) { - /* If the view is not searching, but search is visible, and the - * query is empty, we don't hide it. Some users enable the search - * and then change locations, then they search. */ - if (!nautilus_query_is_empty (query)) - nautilus_window_slot_set_search_visible (self, FALSE); - g_object_unref (query); + NautilusWindowSlotPrivate *priv; + NautilusQuery *query; + NautilusView *view; + + priv = nautilus_window_slot_get_instance_private (self); + + view = nautilus_window_slot_get_current_view (self); + /* If we changed location just to another search location, for example, + * when changing the query, just keep the search visible. + * Make sure the search is visible though, since we could be returning + * from a previous search location when using the history */ + if (nautilus_view_is_searching (view)) + { + nautilus_window_slot_set_search_visible (self, TRUE); + return; + } + + query = nautilus_query_editor_get_query (priv->query_editor); + if (query) + { + /* If the view is not searching, but search is visible, and the + * query is empty, we don't hide it. Some users enable the search + * and then change locations, then they search. */ + if (!nautilus_query_is_empty (query)) + { + nautilus_window_slot_set_search_visible (self, FALSE); } + g_object_unref (query); + } - if (priv->pending_search_text) - nautilus_window_slot_search (self, g_strdup (priv->pending_search_text)); + if (priv->pending_search_text) + { + nautilus_window_slot_search (self, g_strdup (priv->pending_search_text)); + } } static void nautilus_window_slot_sync_actions (NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - GAction *action; - GVariant *variant; + GAction *action; + GVariant *variant; - priv = nautilus_window_slot_get_instance_private (self); - if (!nautilus_window_slot_get_active (self)) { - return; - } + priv = nautilus_window_slot_get_instance_private (self); + if (!nautilus_window_slot_get_active (self)) + { + return; + } - if (priv->content_view == NULL || priv->new_content_view != NULL) { - return; - } + if (priv->content_view == NULL || priv->new_content_view != NULL) + { + return; + } - /* Check if we need to close the search or show search after changing the location. - * Needs to be done after the change has been done, if not, a loop happens, - * because setting the search enabled or not actually opens a location */ - update_search_visible (self); + /* Check if we need to close the search or show search after changing the location. + * Needs to be done after the change has been done, if not, a loop happens, + * because setting the search enabled or not actually opens a location */ + update_search_visible (self); - /* Files view mode */ - action = g_action_map_lookup_action (G_ACTION_MAP (priv->slot_action_group), "files-view-mode"); - if (g_action_get_enabled (action)) { - variant = g_variant_new_uint32 (nautilus_files_view_get_view_id (NAUTILUS_FILES_VIEW (nautilus_window_slot_get_current_view (self)))); - g_action_change_state (action, variant); - } + /* Files view mode */ + action = g_action_map_lookup_action (G_ACTION_MAP (priv->slot_action_group), "files-view-mode"); + if (g_action_get_enabled (action)) + { + variant = g_variant_new_uint32 (nautilus_files_view_get_view_id (NAUTILUS_FILES_VIEW (nautilus_window_slot_get_current_view (self)))); + g_action_change_state (action, variant); + } } static void query_editor_cancel_callback (NautilusQueryEditor *editor, NautilusWindowSlot *self) { - nautilus_window_slot_set_search_visible (self, FALSE); + nautilus_window_slot_set_search_visible (self, FALSE); } static void query_editor_activated_callback (NautilusQueryEditor *editor, NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - priv = nautilus_window_slot_get_instance_private (self); - if (priv->content_view != NULL) { - if (NAUTILUS_IS_FILES_VIEW (priv->content_view)) { - nautilus_files_view_activate_selection (NAUTILUS_FILES_VIEW (priv->content_view)); - } + priv = nautilus_window_slot_get_instance_private (self); + if (priv->content_view != NULL) + { + if (NAUTILUS_IS_FILES_VIEW (priv->content_view)) + { + nautilus_files_view_activate_selection (NAUTILUS_FILES_VIEW (priv->content_view)); + } - nautilus_window_slot_set_search_visible (self, FALSE); - } + nautilus_window_slot_set_search_visible (self, FALSE); + } } static void query_editor_changed_callback (NautilusQueryEditor *editor, - NautilusQuery *query, - gboolean reload, - NautilusWindowSlot *self) + NautilusQuery *query, + gboolean reload, + NautilusWindowSlot *self) { - NautilusView *view; + NautilusView *view; - view = nautilus_window_slot_get_current_view (self); + view = nautilus_window_slot_get_current_view (self); - nautilus_view_set_search_query (view, query); - nautilus_window_slot_open_location_full (self, nautilus_view_get_location (view), 0, NULL); + nautilus_view_set_search_query (view, query); + nautilus_window_slot_open_location_full (self, nautilus_view_get_location (view), 0, NULL); } static void hide_query_editor (NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; - NautilusView *view; - - priv = nautilus_window_slot_get_instance_private (self); - view = nautilus_window_slot_get_current_view (self); - - gtk_search_bar_set_search_mode (GTK_SEARCH_BAR (priv->query_editor), FALSE); - - if (priv->qe_changed_id > 0) { - g_signal_handler_disconnect (priv->query_editor, priv->qe_changed_id); - priv->qe_changed_id = 0; - } - if (priv->qe_cancel_id > 0) { - g_signal_handler_disconnect (priv->query_editor, priv->qe_cancel_id); - priv->qe_cancel_id = 0; - } - if (priv->qe_activated_id > 0) { - g_signal_handler_disconnect (priv->query_editor, priv->qe_activated_id); - priv->qe_activated_id = 0; - } - - nautilus_query_editor_set_query (priv->query_editor, NULL); - - if (nautilus_view_is_searching (view)) { - GList *selection; + NautilusWindowSlotPrivate *priv; + NautilusView *view; + + priv = nautilus_window_slot_get_instance_private (self); + view = nautilus_window_slot_get_current_view (self); + + gtk_search_bar_set_search_mode (GTK_SEARCH_BAR (priv->query_editor), FALSE); + + if (priv->qe_changed_id > 0) + { + g_signal_handler_disconnect (priv->query_editor, priv->qe_changed_id); + priv->qe_changed_id = 0; + } + if (priv->qe_cancel_id > 0) + { + g_signal_handler_disconnect (priv->query_editor, priv->qe_cancel_id); + priv->qe_cancel_id = 0; + } + if (priv->qe_activated_id > 0) + { + g_signal_handler_disconnect (priv->query_editor, priv->qe_activated_id); + priv->qe_activated_id = 0; + } + + nautilus_query_editor_set_query (priv->query_editor, NULL); + + if (nautilus_view_is_searching (view)) + { + GList *selection; - selection = nautilus_view_get_selection (view); + selection = nautilus_view_get_selection (view); - nautilus_view_set_search_query (view, NULL); - nautilus_window_slot_open_location_full (self, - nautilus_view_get_location (view), - 0, - selection); + nautilus_view_set_search_query (view, NULL); + nautilus_window_slot_open_location_full (self, + nautilus_view_get_location (view), + 0, + selection); - nautilus_file_list_free (selection); - } + nautilus_file_list_free (selection); + } - if (nautilus_window_slot_get_active (self)) { - gtk_widget_grab_focus (GTK_WIDGET (priv->window)); - } + if (nautilus_window_slot_get_active (self)) + { + gtk_widget_grab_focus (GTK_WIDGET (priv->window)); + } } static GFile * nautilus_window_slot_get_current_location (NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - priv = nautilus_window_slot_get_instance_private (self); - if (priv->pending_location != NULL) { - return priv->pending_location; - } + priv = nautilus_window_slot_get_instance_private (self); + if (priv->pending_location != NULL) + { + return priv->pending_location; + } - if (priv->location != NULL) { - return priv->location; - } + if (priv->location != NULL) + { + return priv->location; + } - return NULL; + return NULL; } static void show_query_editor (NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; - NautilusView *view; + NautilusWindowSlotPrivate *priv; + NautilusView *view; - priv = nautilus_window_slot_get_instance_private (self); - view = nautilus_window_slot_get_current_view (self); + priv = nautilus_window_slot_get_instance_private (self); + view = nautilus_window_slot_get_current_view (self); - if (nautilus_view_is_searching (view)) { - NautilusQuery *query; + if (nautilus_view_is_searching (view)) + { + NautilusQuery *query; - query = nautilus_view_get_search_query (view); + query = nautilus_view_get_search_query (view); - if (query != NULL) { - nautilus_query_editor_set_query (priv->query_editor, query); - } + if (query != NULL) + { + nautilus_query_editor_set_query (priv->query_editor, query); } - - gtk_search_bar_set_search_mode (GTK_SEARCH_BAR (priv->query_editor), TRUE); - gtk_widget_grab_focus (GTK_WIDGET (priv->query_editor)); - - if (priv->qe_changed_id == 0) { - priv->qe_changed_id = - g_signal_connect (priv->query_editor, "changed", - G_CALLBACK (query_editor_changed_callback), self); - } - if (priv->qe_cancel_id == 0) { - priv->qe_cancel_id = - g_signal_connect (priv->query_editor, "cancel", - G_CALLBACK (query_editor_cancel_callback), self); - } - if (priv->qe_activated_id == 0) { - priv->qe_activated_id = - g_signal_connect (priv->query_editor, "activated", - G_CALLBACK (query_editor_activated_callback), self); - } + } + + gtk_search_bar_set_search_mode (GTK_SEARCH_BAR (priv->query_editor), TRUE); + gtk_widget_grab_focus (GTK_WIDGET (priv->query_editor)); + + if (priv->qe_changed_id == 0) + { + priv->qe_changed_id = + g_signal_connect (priv->query_editor, "changed", + G_CALLBACK (query_editor_changed_callback), self); + } + if (priv->qe_cancel_id == 0) + { + priv->qe_cancel_id = + g_signal_connect (priv->query_editor, "cancel", + G_CALLBACK (query_editor_cancel_callback), self); + } + if (priv->qe_activated_id == 0) + { + priv->qe_activated_id = + g_signal_connect (priv->query_editor, "activated", + G_CALLBACK (query_editor_activated_callback), self); + } } static void nautilus_window_slot_set_search_visible (NautilusWindowSlot *self, - gboolean visible) + gboolean visible) { - NautilusWindowSlotPrivate *priv; - GAction *action; + NautilusWindowSlotPrivate *priv; + GAction *action; - priv = nautilus_window_slot_get_instance_private (self); + priv = nautilus_window_slot_get_instance_private (self); - action = g_action_map_lookup_action (G_ACTION_MAP (priv->slot_action_group), - "search-visible"); - g_action_change_state (action, g_variant_new_boolean (visible)); + action = g_action_map_lookup_action (G_ACTION_MAP (priv->slot_action_group), + "search-visible"); + g_action_change_state (action, g_variant_new_boolean (visible)); } static gboolean nautilus_window_slot_get_search_visible (NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; - GAction *action; - GVariant *state; - gboolean searching; + NautilusWindowSlotPrivate *priv; + GAction *action; + GVariant *state; + gboolean searching; - priv = nautilus_window_slot_get_instance_private (self); - action = g_action_map_lookup_action (G_ACTION_MAP (priv->slot_action_group), - "search-visible"); - state = g_action_get_state (action); - searching = g_variant_get_boolean (state); + priv = nautilus_window_slot_get_instance_private (self); + action = g_action_map_lookup_action (G_ACTION_MAP (priv->slot_action_group), + "search-visible"); + state = g_action_get_state (action); + searching = g_variant_get_boolean (state); - g_variant_unref (state); + g_variant_unref (state); - return searching; + return searching; } void nautilus_window_slot_search (NautilusWindowSlot *self, const gchar *text) { - NautilusWindowSlotPrivate *priv; - NautilusView *view; - - priv = nautilus_window_slot_get_instance_private (self); - if (priv->pending_search_text) { - g_free (priv->pending_search_text); - priv->pending_search_text = NULL; - } - - view = nautilus_window_slot_get_current_view (self); - /* We could call this when the location is still being checked in the - * window slot. For that, save the search we want to do for once we have - * a view set up */ - if (view) { - nautilus_window_slot_set_search_visible (self, TRUE); - nautilus_query_editor_set_text (priv->query_editor, text); - } else { - priv->pending_search_text = g_strdup (text); - } + NautilusWindowSlotPrivate *priv; + NautilusView *view; + + priv = nautilus_window_slot_get_instance_private (self); + if (priv->pending_search_text) + { + g_free (priv->pending_search_text); + priv->pending_search_text = NULL; + } + + view = nautilus_window_slot_get_current_view (self); + /* We could call this when the location is still being checked in the + * window slot. For that, save the search we want to do for once we have + * a view set up */ + if (view) + { + nautilus_window_slot_set_search_visible (self, TRUE); + nautilus_query_editor_set_text (priv->query_editor, text); + } + else + { + priv->pending_search_text = g_strdup (text); + } } gboolean nautilus_window_slot_handle_event (NautilusWindowSlot *self, - GdkEventKey *event) + GdkEventKey *event) { - NautilusWindowSlotPrivate *priv; - gboolean retval; - GAction *action; + NautilusWindowSlotPrivate *priv; + gboolean retval; + GAction *action; - priv = nautilus_window_slot_get_instance_private (self); - retval = FALSE; - action = g_action_map_lookup_action (G_ACTION_MAP (priv->slot_action_group), - "search-visible"); + priv = nautilus_window_slot_get_instance_private (self); + retval = FALSE; + action = g_action_map_lookup_action (G_ACTION_MAP (priv->slot_action_group), + "search-visible"); - /* If the action is not enabled, don't try to handle search */ - if (g_action_get_enabled (action)) { - retval = gtk_search_bar_handle_event (GTK_SEARCH_BAR (priv->query_editor), - (GdkEvent*) event); - } + /* If the action is not enabled, don't try to handle search */ + if (g_action_get_enabled (action)) + { + retval = gtk_search_bar_handle_event (GTK_SEARCH_BAR (priv->query_editor), + (GdkEvent *) event); + } - if (retval) { - nautilus_window_slot_set_search_visible (self, TRUE); - } + if (retval) + { + nautilus_window_slot_set_search_visible (self, TRUE); + } - return retval; + return retval; } static void real_active (NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; - NautilusWindow *window; - int page_num; + NautilusWindowSlotPrivate *priv; + NautilusWindow *window; + int page_num; - priv = nautilus_window_slot_get_instance_private (self); - window = priv->window; - page_num = gtk_notebook_page_num (GTK_NOTEBOOK (nautilus_window_get_notebook (window)), - GTK_WIDGET (self)); - g_assert (page_num >= 0); + priv = nautilus_window_slot_get_instance_private (self); + window = priv->window; + page_num = gtk_notebook_page_num (GTK_NOTEBOOK (nautilus_window_get_notebook (window)), + GTK_WIDGET (self)); + g_assert (page_num >= 0); - gtk_notebook_set_current_page (GTK_NOTEBOOK (nautilus_window_get_notebook (window)), page_num); + gtk_notebook_set_current_page (GTK_NOTEBOOK (nautilus_window_get_notebook (window)), page_num); - /* sync window to new slot */ - nautilus_window_sync_allow_stop (window, self); - nautilus_window_sync_title (window, self); - nautilus_window_sync_location_widgets (window); - nautilus_window_slot_sync_actions (self); + /* sync window to new slot */ + nautilus_window_sync_allow_stop (window, self); + nautilus_window_sync_title (window, self); + nautilus_window_sync_location_widgets (window); + nautilus_window_slot_sync_actions (self); - gtk_widget_insert_action_group (GTK_WIDGET (window), "slot", priv->slot_action_group); + gtk_widget_insert_action_group (GTK_WIDGET (window), "slot", priv->slot_action_group); } static void real_inactive (NautilusWindowSlot *self) { - NautilusWindow *window; + NautilusWindow *window; - window = nautilus_window_slot_get_window (self); - g_assert (self == nautilus_window_get_active_slot (window)); + window = nautilus_window_slot_get_window (self); + g_assert (self == nautilus_window_get_active_slot (window)); - gtk_widget_insert_action_group (GTK_WIDGET (window), "slot", NULL); + gtk_widget_insert_action_group (GTK_WIDGET (window), "slot", NULL); } static void remove_all_extra_location_widgets (GtkWidget *widget, - gpointer data) + gpointer data) { - NautilusWindowSlotPrivate *priv; - NautilusWindowSlot *self = data; - NautilusDirectory *directory; + NautilusWindowSlotPrivate *priv; + NautilusWindowSlot *self = data; + NautilusDirectory *directory; - priv = nautilus_window_slot_get_instance_private (self); - directory = nautilus_directory_get (priv->location); - if (widget != GTK_WIDGET (priv->query_editor)) { - gtk_container_remove (GTK_CONTAINER (priv->extra_location_widgets), widget); - } + priv = nautilus_window_slot_get_instance_private (self); + directory = nautilus_directory_get (priv->location); + if (widget != GTK_WIDGET (priv->query_editor)) + { + gtk_container_remove (GTK_CONTAINER (priv->extra_location_widgets), widget); + } - nautilus_directory_unref (directory); + nautilus_directory_unref (directory); } static void nautilus_window_slot_remove_extra_location_widgets (NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - priv = nautilus_window_slot_get_instance_private (self); - gtk_container_foreach (GTK_CONTAINER (priv->extra_location_widgets), - remove_all_extra_location_widgets, - self); + priv = nautilus_window_slot_get_instance_private (self); + gtk_container_foreach (GTK_CONTAINER (priv->extra_location_widgets), + remove_all_extra_location_widgets, + self); } static void nautilus_window_slot_add_extra_location_widget (NautilusWindowSlot *self, GtkWidget *widget) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - priv = nautilus_window_slot_get_instance_private (self); - gtk_box_pack_start (GTK_BOX (priv->extra_location_widgets), - widget, FALSE, TRUE, 0); - gtk_widget_show (priv->extra_location_widgets); + priv = nautilus_window_slot_get_instance_private (self); + gtk_box_pack_start (GTK_BOX (priv->extra_location_widgets), + widget, FALSE, TRUE, 0); + gtk_widget_show (priv->extra_location_widgets); } static void -nautilus_window_slot_set_property (GObject *object, - guint property_id, - const GValue *value, - GParamSpec *pspec) +nautilus_window_slot_set_property (GObject *object, + guint property_id, + const GValue *value, + GParamSpec *pspec) { - NautilusWindowSlot *self = NAUTILUS_WINDOW_SLOT (object); + NautilusWindowSlot *self = NAUTILUS_WINDOW_SLOT (object); - switch (property_id) { + switch (property_id) + { case PROP_ACTIVE: - nautilus_window_slot_set_active (self, g_value_get_boolean (value)); - break; - case PROP_WINDOW: - nautilus_window_slot_set_window (self, g_value_get_object (value)); - break; - case PROP_LOCATION: - nautilus_window_slot_set_location (self, g_value_get_object (value)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } + { + nautilus_window_slot_set_active (self, g_value_get_boolean (value)); + } + break; + + case PROP_WINDOW: + { + nautilus_window_slot_set_window (self, g_value_get_object (value)); + } + break; + + case PROP_LOCATION: + { + nautilus_window_slot_set_location (self, g_value_get_object (value)); + } + break; + + default: + { + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } + break; + } } static void -nautilus_window_slot_get_property (GObject *object, - guint property_id, - GValue *value, - GParamSpec *pspec) +nautilus_window_slot_get_property (GObject *object, + guint property_id, + GValue *value, + GParamSpec *pspec) { - NautilusWindowSlot *self = NAUTILUS_WINDOW_SLOT (object); - NautilusWindowSlotPrivate *priv; + NautilusWindowSlot *self = NAUTILUS_WINDOW_SLOT (object); + NautilusWindowSlotPrivate *priv; - priv = nautilus_window_slot_get_instance_private (self); + priv = nautilus_window_slot_get_instance_private (self); - switch (property_id) { + switch (property_id) + { case PROP_ACTIVE: - g_value_set_boolean (value, nautilus_window_slot_get_active (self)); - break; - case PROP_WINDOW: - g_value_set_object (value, priv->window); - break; + { + g_value_set_boolean (value, nautilus_window_slot_get_active (self)); + } + break; + + case PROP_WINDOW: + { + g_value_set_object (value, priv->window); + } + break; + case PROP_ICON: - g_value_set_object (value, nautilus_window_slot_get_icon (self)); - break; + { + g_value_set_object (value, nautilus_window_slot_get_icon (self)); + } + break; + case PROP_TOOLBAR_MENU_SECTIONS: - g_value_set_pointer (value, nautilus_window_slot_get_toolbar_menu_sections (self)); - break; + { + g_value_set_pointer (value, nautilus_window_slot_get_toolbar_menu_sections (self)); + } + break; + case PROP_LOADING: - g_value_set_boolean (value, nautilus_window_slot_get_loading (self)); - break; + { + g_value_set_boolean (value, nautilus_window_slot_get_loading (self)); + } + break; + case PROP_LOCATION: - g_value_set_object (value, nautilus_window_slot_get_current_location (self)); - break; - default: - G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); - break; - } + { + g_value_set_object (value, nautilus_window_slot_get_current_location (self)); + } + break; + + default: + { + G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec); + } + break; + } } static void nautilus_window_slot_constructed (GObject *object) { - NautilusWindowSlotPrivate *priv; - NautilusWindowSlot *self = NAUTILUS_WINDOW_SLOT (object); - GtkWidget *extras_vbox; - GtkStyleContext *style_context; + NautilusWindowSlotPrivate *priv; + NautilusWindowSlot *self = NAUTILUS_WINDOW_SLOT (object); + GtkWidget *extras_vbox; + GtkStyleContext *style_context; - priv = nautilus_window_slot_get_instance_private (self); - G_OBJECT_CLASS (nautilus_window_slot_parent_class)->constructed (object); + priv = nautilus_window_slot_get_instance_private (self); + G_OBJECT_CLASS (nautilus_window_slot_parent_class)->constructed (object); - gtk_orientable_set_orientation (GTK_ORIENTABLE (self), - GTK_ORIENTATION_VERTICAL); - gtk_widget_show (GTK_WIDGET (self)); + gtk_orientable_set_orientation (GTK_ORIENTABLE (self), + GTK_ORIENTATION_VERTICAL); + gtk_widget_show (GTK_WIDGET (self)); - extras_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); - style_context = gtk_widget_get_style_context (extras_vbox); - gtk_style_context_add_class (style_context, "searchbar-container"); - priv->extra_location_widgets = extras_vbox; - gtk_box_pack_start (GTK_BOX (self), extras_vbox, FALSE, FALSE, 0); - gtk_widget_show (extras_vbox); + extras_vbox = gtk_box_new (GTK_ORIENTATION_VERTICAL, 0); + style_context = gtk_widget_get_style_context (extras_vbox); + gtk_style_context_add_class (style_context, "searchbar-container"); + priv->extra_location_widgets = extras_vbox; + gtk_box_pack_start (GTK_BOX (self), extras_vbox, FALSE, FALSE, 0); + gtk_widget_show (extras_vbox); - priv->query_editor = NAUTILUS_QUERY_EDITOR (nautilus_query_editor_new ()); - gtk_widget_show (GTK_WIDGET (priv->query_editor)); - nautilus_window_slot_add_extra_location_widget (self, GTK_WIDGET (priv->query_editor)); + priv->query_editor = NAUTILUS_QUERY_EDITOR (nautilus_query_editor_new ()); + gtk_widget_show (GTK_WIDGET (priv->query_editor)); + nautilus_window_slot_add_extra_location_widget (self, GTK_WIDGET (priv->query_editor)); - g_object_bind_property (self, "location", - priv->query_editor, "location", - G_BINDING_DEFAULT); + g_object_bind_property (self, "location", + priv->query_editor, "location", + G_BINDING_DEFAULT); - priv->title = g_strdup (_("Loading…")); + priv->title = g_strdup (_("Loading…")); } static void @@ -701,36 +785,40 @@ action_search_visible (GSimpleAction *action, GVariant *state, gpointer user_data) { - NautilusWindowSlot *self; - GVariant *current_state; + NautilusWindowSlot *self; + GVariant *current_state; - self = NAUTILUS_WINDOW_SLOT (user_data); - current_state = g_action_get_state (G_ACTION (action)); - if (g_variant_get_boolean (current_state) != g_variant_get_boolean (state)) { - g_simple_action_set_state (action, state); + self = NAUTILUS_WINDOW_SLOT (user_data); + current_state = g_action_get_state (G_ACTION (action)); + if (g_variant_get_boolean (current_state) != g_variant_get_boolean (state)) + { + g_simple_action_set_state (action, state); - if (g_variant_get_boolean (state)) { - show_query_editor (self); - } else { - hide_query_editor (self); - } + if (g_variant_get_boolean (state)) + { + show_query_editor (self); + } + else + { + hide_query_editor (self); } + } - g_variant_unref (current_state); + g_variant_unref (current_state); } static void change_files_view_mode (NautilusWindowSlot *self, guint view_id) { - const gchar *preferences_key; + const gchar *preferences_key; - nautilus_window_slot_set_content_view (self, view_id); - preferences_key = nautilus_view_is_searching (nautilus_window_slot_get_current_view (self)) ? - NAUTILUS_PREFERENCES_SEARCH_VIEW : - NAUTILUS_PREFERENCES_DEFAULT_FOLDER_VIEWER; + nautilus_window_slot_set_content_view (self, view_id); + preferences_key = nautilus_view_is_searching (nautilus_window_slot_get_current_view (self)) ? + NAUTILUS_PREFERENCES_SEARCH_VIEW : + NAUTILUS_PREFERENCES_DEFAULT_FOLDER_VIEWER; - g_settings_set_enum (nautilus_preferences, preferences_key, view_id); + g_settings_set_enum (nautilus_preferences, preferences_key, view_id); } static void @@ -738,93 +826,102 @@ action_files_view_mode_toggle (GSimpleAction *action, GVariant *value, gpointer user_data) { - NautilusWindowSlot *self; - NautilusWindowSlotPrivate *priv; - guint current_view_id; + NautilusWindowSlot *self; + NautilusWindowSlotPrivate *priv; + guint current_view_id; - self = NAUTILUS_WINDOW_SLOT (user_data); - priv = nautilus_window_slot_get_instance_private (self); - if (priv->content_view == NULL) - return; + self = NAUTILUS_WINDOW_SLOT (user_data); + priv = nautilus_window_slot_get_instance_private (self); + if (priv->content_view == NULL) + { + return; + } - current_view_id = nautilus_files_view_get_view_id (NAUTILUS_FILES_VIEW (priv->content_view)); - if (current_view_id == NAUTILUS_VIEW_LIST_ID) - change_files_view_mode (self, NAUTILUS_VIEW_GRID_ID); - else - change_files_view_mode (self, NAUTILUS_VIEW_LIST_ID); + current_view_id = nautilus_files_view_get_view_id (NAUTILUS_FILES_VIEW (priv->content_view)); + if (current_view_id == NAUTILUS_VIEW_LIST_ID) + { + change_files_view_mode (self, NAUTILUS_VIEW_GRID_ID); + } + else + { + change_files_view_mode (self, NAUTILUS_VIEW_LIST_ID); + } } static void action_files_view_mode (GSimpleAction *action, - GVariant *value, - gpointer user_data) + GVariant *value, + gpointer user_data) { - NautilusWindowSlot *self; - guint view_id; + NautilusWindowSlot *self; + guint view_id; - view_id = g_variant_get_uint32 (value); - self = NAUTILUS_WINDOW_SLOT (user_data); + view_id = g_variant_get_uint32 (value); + self = NAUTILUS_WINDOW_SLOT (user_data); - if (!NAUTILUS_IS_FILES_VIEW (nautilus_window_slot_get_current_view (self))) - return; + if (!NAUTILUS_IS_FILES_VIEW (nautilus_window_slot_get_current_view (self))) + { + return; + } - change_files_view_mode (self, view_id); + change_files_view_mode (self, view_id); - g_simple_action_set_state (action, value); + g_simple_action_set_state (action, value); } -const GActionEntry slot_entries[] = { - /* 4 is NAUTILUS_VIEW_INVALID_ID */ - { "files-view-mode", NULL, "u", "uint32 4", action_files_view_mode }, - { "files-view-mode-toggle", action_files_view_mode_toggle }, - { "search-visible", NULL, NULL, "false", action_search_visible }, +const GActionEntry slot_entries[] = +{ + /* 4 is NAUTILUS_VIEW_INVALID_ID */ + { "files-view-mode", NULL, "u", "uint32 4", action_files_view_mode }, + { "files-view-mode-toggle", action_files_view_mode_toggle }, + { "search-visible", NULL, NULL, "false", action_search_visible }, }; static void nautilus_window_slot_init (NautilusWindowSlot *self) { - GApplication *app; - NautilusWindowSlotPrivate *priv; + GApplication *app; + NautilusWindowSlotPrivate *priv; - priv = nautilus_window_slot_get_instance_private (self); - app = g_application_get_default (); + priv = nautilus_window_slot_get_instance_private (self); + app = g_application_get_default (); - priv->slot_action_group = G_ACTION_GROUP (g_simple_action_group_new ()); - g_action_map_add_action_entries (G_ACTION_MAP (priv->slot_action_group), - slot_entries, - G_N_ELEMENTS (slot_entries), - self); - gtk_widget_insert_action_group (GTK_WIDGET (self), - "slot", - G_ACTION_GROUP (priv->slot_action_group)); - nautilus_application_set_accelerator (app, "slot.files-view-mode(uint32 1)", "<control>1"); - nautilus_application_set_accelerator (app, "slot.files-view-mode(uint32 0)", "<control>2"); - nautilus_application_set_accelerator (app, "slot.search-visible", "<control>f"); + priv->slot_action_group = G_ACTION_GROUP (g_simple_action_group_new ()); + g_action_map_add_action_entries (G_ACTION_MAP (priv->slot_action_group), + slot_entries, + G_N_ELEMENTS (slot_entries), + self); + gtk_widget_insert_action_group (GTK_WIDGET (self), + "slot", + G_ACTION_GROUP (priv->slot_action_group)); + nautilus_application_set_accelerator (app, "slot.files-view-mode(uint32 1)", "<control>1"); + nautilus_application_set_accelerator (app, "slot.files-view-mode(uint32 0)", "<control>2"); + nautilus_application_set_accelerator (app, "slot.search-visible", "<control>f"); - priv->view_mode_before_search = NAUTILUS_VIEW_INVALID_ID; + priv->view_mode_before_search = NAUTILUS_VIEW_INVALID_ID; } #define DEBUG_FLAG NAUTILUS_DEBUG_WINDOW #include "nautilus-debug.h" -static void begin_location_change (NautilusWindowSlot *slot, - GFile *location, - GFile *previous_location, - GList *new_selection, - NautilusLocationChangeType type, - guint distance, - const char *scroll_pos); -static void free_location_change (NautilusWindowSlot *self); -static void end_location_change (NautilusWindowSlot *self); -static void got_file_info_for_view_selection_callback (NautilusFile *file, - gpointer callback_data); -static gboolean setup_view (NautilusWindowSlot *self, - NautilusView *view); -static void load_new_location (NautilusWindowSlot *slot, - GFile *location, - GList *selection, - gboolean tell_current_content_view, - gboolean tell_new_content_view); +static void begin_location_change (NautilusWindowSlot *slot, + GFile *location, + GFile *previous_location, + GList *new_selection, + NautilusLocationChangeType type, + guint distance, + const char *scroll_pos); +static void free_location_change (NautilusWindowSlot *self); +static void end_location_change (NautilusWindowSlot *self); +static void got_file_info_for_view_selection_callback (NautilusFile *file, + gpointer callback_data); +static gboolean setup_view (NautilusWindowSlot *self, + NautilusView *view); +static void load_new_location (NautilusWindowSlot *slot, + GFile *location, + GList *selection, + gboolean tell_current_content_view, + gboolean tell_new_content_view); void nautilus_window_slot_open_location_full (NautilusWindowSlot *self, @@ -832,108 +929,119 @@ nautilus_window_slot_open_location_full (NautilusWindowSlot *self, NautilusWindowOpenFlags flags, GList *new_selection) { - NautilusWindowSlotPrivate *priv; - GFile *old_location; - GList *old_selection; + NautilusWindowSlotPrivate *priv; + GFile *old_location; + GList *old_selection; - priv = nautilus_window_slot_get_instance_private (self); - old_selection = NULL; - old_location = nautilus_window_slot_get_location (self); - - if (priv->content_view) { - old_selection = nautilus_view_get_selection (priv->content_view); - } - if (old_location && g_file_equal (old_location, location) && - nautilus_file_selection_equal (old_selection, new_selection)) - goto done; + priv = nautilus_window_slot_get_instance_private (self); + old_selection = NULL; + old_location = nautilus_window_slot_get_location (self); - begin_location_change (self, location, old_location, new_selection, - NAUTILUS_LOCATION_CHANGE_STANDARD, 0, NULL); - - done: - nautilus_file_list_free (old_selection); - nautilus_profile_end (NULL); -} + if (priv->content_view) + { + old_selection = nautilus_view_get_selection (priv->content_view); + } + if (old_location && g_file_equal (old_location, location) && + nautilus_file_selection_equal (old_selection, new_selection)) + { + goto done; + } -static GList* -check_select_old_location_containing_folder (GList *new_selection, - GFile *location, - GFile *previous_location) -{ - GFile *from_folder, *parent; + begin_location_change (self, location, old_location, new_selection, + NAUTILUS_LOCATION_CHANGE_STANDARD, 0, NULL); - /* If there is no new selection and the new location is - * a (grand)parent of the old location then we automatically - * select the folder the previous location was in */ - if (new_selection == NULL && previous_location != NULL && - g_file_has_prefix (previous_location, location)) { - from_folder = g_object_ref (previous_location); - parent = g_file_get_parent (from_folder); - while (parent != NULL && !g_file_equal (parent, location)) { - g_object_unref (from_folder); - from_folder = parent; - parent = g_file_get_parent (from_folder); - } +done: + nautilus_file_list_free (old_selection); + nautilus_profile_end (NULL); +} + +static GList * +check_select_old_location_containing_folder (GList *new_selection, + GFile *location, + GFile *previous_location) +{ + GFile *from_folder, *parent; + + /* If there is no new selection and the new location is + * a (grand)parent of the old location then we automatically + * select the folder the previous location was in */ + if (new_selection == NULL && previous_location != NULL && + g_file_has_prefix (previous_location, location)) + { + from_folder = g_object_ref (previous_location); + parent = g_file_get_parent (from_folder); + while (parent != NULL && !g_file_equal (parent, location)) + { + g_object_unref (from_folder); + from_folder = parent; + parent = g_file_get_parent (from_folder); + } - if (parent != NULL) { - new_selection = g_list_prepend (NULL, nautilus_file_get (from_folder)); - g_object_unref (parent); - } + if (parent != NULL) + { + new_selection = g_list_prepend (NULL, nautilus_file_get (from_folder)); + g_object_unref (parent); + } - g_object_unref (from_folder); - } + g_object_unref (from_folder); + } - return new_selection; + return new_selection; } static void check_force_reload (GFile *location, NautilusLocationChangeType type) { - NautilusDirectory *directory; - NautilusFile *file; - gboolean force_reload; - - /* The code to force a reload is here because if we do it - * after determining an initial view (in the components), then - * we end up fetching things twice. - */ - directory = nautilus_directory_get (location); - file = nautilus_file_get (location); - - if (type == NAUTILUS_LOCATION_CHANGE_RELOAD) { - force_reload = TRUE; - } else { - force_reload = !nautilus_directory_is_local (directory); - } - - /* We need to invalidate file attributes as well due to how mounting works - * in the window slot and to avoid other caching issues. - * Read handle_mount_if_needed for one example */ - if (force_reload) { - nautilus_file_invalidate_all_attributes (file); - nautilus_directory_force_reload (directory); - } - - nautilus_directory_unref (directory); - nautilus_file_unref (file); + NautilusDirectory *directory; + NautilusFile *file; + gboolean force_reload; + + /* The code to force a reload is here because if we do it + * after determining an initial view (in the components), then + * we end up fetching things twice. + */ + directory = nautilus_directory_get (location); + file = nautilus_file_get (location); + + if (type == NAUTILUS_LOCATION_CHANGE_RELOAD) + { + force_reload = TRUE; + } + else + { + force_reload = !nautilus_directory_is_local (directory); + } + + /* We need to invalidate file attributes as well due to how mounting works + * in the window slot and to avoid other caching issues. + * Read handle_mount_if_needed for one example */ + if (force_reload) + { + nautilus_file_invalidate_all_attributes (file); + nautilus_directory_force_reload (directory); + } + + nautilus_directory_unref (directory); + nautilus_file_unref (file); } static void save_scroll_position_for_history (NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; - - priv = nautilus_window_slot_get_instance_private (self); - char *current_pos; - /* Set current_bookmark scroll pos */ - if (priv->current_location_bookmark != NULL && - priv->content_view != NULL && - NAUTILUS_IS_FILES_VIEW (priv->content_view)) { - current_pos = nautilus_files_view_get_first_visible_file (NAUTILUS_FILES_VIEW (priv->content_view)); - nautilus_bookmark_set_scroll_pos (priv->current_location_bookmark, current_pos); - g_free (current_pos); - } + NautilusWindowSlotPrivate *priv; + + priv = nautilus_window_slot_get_instance_private (self); + char *current_pos; + /* Set current_bookmark scroll pos */ + if (priv->current_location_bookmark != NULL && + priv->content_view != NULL && + NAUTILUS_IS_FILES_VIEW (priv->content_view)) + { + current_pos = nautilus_files_view_get_first_visible_file (NAUTILUS_FILES_VIEW (priv->content_view)); + nautilus_bookmark_set_scroll_pos (priv->current_location_bookmark, current_pos); + g_free (current_pos); + } } /* @@ -961,201 +1069,218 @@ begin_location_change (NautilusWindowSlot *self, guint distance, const char *scroll_pos) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - g_assert (self != NULL); - g_assert (location != NULL); - g_assert (type == NAUTILUS_LOCATION_CHANGE_BACK - || type == NAUTILUS_LOCATION_CHANGE_FORWARD - || distance == 0); + g_assert (self != NULL); + g_assert (location != NULL); + g_assert (type == NAUTILUS_LOCATION_CHANGE_BACK + || type == NAUTILUS_LOCATION_CHANGE_FORWARD + || distance == 0); - nautilus_profile_start (NULL); + nautilus_profile_start (NULL); - priv = nautilus_window_slot_get_instance_private (self); - /* Avoid to update status from the current view in our async calls */ - nautilus_window_slot_disconnect_content_view (self); - /* We are going to change the location, so make sure we stop any loading - * or searching of the previous view, so we avoid to be slow */ - nautilus_window_slot_stop_loading (self); + priv = nautilus_window_slot_get_instance_private (self); + /* Avoid to update status from the current view in our async calls */ + nautilus_window_slot_disconnect_content_view (self); + /* We are going to change the location, so make sure we stop any loading + * or searching of the previous view, so we avoid to be slow */ + nautilus_window_slot_stop_loading (self); - nautilus_window_slot_set_allow_stop (self, TRUE); + nautilus_window_slot_set_allow_stop (self, TRUE); - new_selection = check_select_old_location_containing_folder (new_selection, location, previous_location); + new_selection = check_select_old_location_containing_folder (new_selection, location, previous_location); - g_assert (priv->pending_location == NULL); + g_assert (priv->pending_location == NULL); - priv->pending_location = g_object_ref (location); - priv->location_change_type = type; - priv->location_change_distance = distance; - priv->tried_mount = FALSE; - priv->pending_selection = nautilus_file_list_copy (new_selection); + priv->pending_location = g_object_ref (location); + priv->location_change_type = type; + priv->location_change_distance = distance; + priv->tried_mount = FALSE; + priv->pending_selection = nautilus_file_list_copy (new_selection); - priv->pending_scroll_to = g_strdup (scroll_pos); + priv->pending_scroll_to = g_strdup (scroll_pos); - check_force_reload (location, type); + check_force_reload (location, type); - save_scroll_position_for_history (self); + save_scroll_position_for_history (self); - /* Get the info needed to make decisions about how to open the new location */ - priv->determine_view_file = nautilus_file_get (location); - g_assert (priv->determine_view_file != NULL); + /* Get the info needed to make decisions about how to open the new location */ + priv->determine_view_file = nautilus_file_get (location); + g_assert (priv->determine_view_file != NULL); - nautilus_file_call_when_ready (priv->determine_view_file, - NAUTILUS_FILE_ATTRIBUTE_INFO | - NAUTILUS_FILE_ATTRIBUTE_MOUNT, - got_file_info_for_view_selection_callback, - self); + nautilus_file_call_when_ready (priv->determine_view_file, + NAUTILUS_FILE_ATTRIBUTE_INFO | + NAUTILUS_FILE_ATTRIBUTE_MOUNT, + got_file_info_for_view_selection_callback, + self); - nautilus_profile_end (NULL); + nautilus_profile_end (NULL); } static void nautilus_window_slot_set_location (NautilusWindowSlot *self, GFile *location) { - NautilusWindowSlotPrivate *priv; - GFile *old_location; + NautilusWindowSlotPrivate *priv; + GFile *old_location; - priv = nautilus_window_slot_get_instance_private (self); - if (priv->location && - g_file_equal (location, priv->location)) { - /* The location name could be updated even if the location - * wasn't changed. This is the case for a search. - */ - nautilus_window_slot_update_title (self); - return; - } + priv = nautilus_window_slot_get_instance_private (self); + if (priv->location && + g_file_equal (location, priv->location)) + { + /* The location name could be updated even if the location + * wasn't changed. This is the case for a search. + */ + nautilus_window_slot_update_title (self); + return; + } - old_location = priv->location; - priv->location = g_object_ref (location); + old_location = priv->location; + priv->location = g_object_ref (location); - if (nautilus_window_slot_get_active (self)) { - nautilus_window_sync_location_widgets (priv->window); - } + if (nautilus_window_slot_get_active (self)) + { + nautilus_window_sync_location_widgets (priv->window); + } - nautilus_window_slot_update_title (self); + nautilus_window_slot_update_title (self); - if (old_location) { - g_object_unref (old_location); - } + if (old_location) + { + g_object_unref (old_location); + } - g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_LOCATION]); + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_LOCATION]); } static void viewed_file_changed_callback (NautilusFile *file, NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; - GFile *new_location; - gboolean is_in_trash, was_in_trash; + NautilusWindowSlotPrivate *priv; + GFile *new_location; + gboolean is_in_trash, was_in_trash; - g_assert (NAUTILUS_IS_FILE (file)); - g_assert (NAUTILUS_IS_WINDOW_SLOT (self)); + g_assert (NAUTILUS_IS_FILE (file)); + g_assert (NAUTILUS_IS_WINDOW_SLOT (self)); - priv = nautilus_window_slot_get_instance_private (self); - g_assert (file == priv->viewed_file); + priv = nautilus_window_slot_get_instance_private (self); + g_assert (file == priv->viewed_file); - if (!nautilus_file_is_not_yet_confirmed (file)) { - priv->viewed_file_seen = TRUE; - } + if (!nautilus_file_is_not_yet_confirmed (file)) + { + priv->viewed_file_seen = TRUE; + } - was_in_trash = priv->viewed_file_in_trash; + was_in_trash = priv->viewed_file_in_trash; - priv->viewed_file_in_trash = is_in_trash = nautilus_file_is_in_trash (file); + priv->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 (priv->viewed_file_seen) { - GFile *go_to_file; - GFile *parent; - GFile *location; - GMount *mount; + if (nautilus_file_is_gone (file) || (is_in_trash && !was_in_trash)) + { + if (priv->viewed_file_seen) + { + GFile *go_to_file; + GFile *parent; + GFile *location; + GMount *mount; - parent = NULL; - location = nautilus_file_get_location (file); + parent = NULL; + location = nautilus_file_get_location (file); - if (g_file_is_native (location)) { - mount = nautilus_get_mounted_mount_for_root (location); + if (g_file_is_native (location)) + { + mount = nautilus_get_mounted_mount_for_root (location); - if (mount == NULL) { - parent = g_file_get_parent (location); - } + if (mount == NULL) + { + parent = g_file_get_parent (location); + } - g_clear_object (&mount); - } + g_clear_object (&mount); + } - if (parent != NULL) { - /* auto-show existing parent */ - go_to_file = nautilus_find_existing_uri_in_hierarchy (parent); - } else { - go_to_file = g_file_new_for_path (g_get_home_dir ()); - } + if (parent != NULL) + { + /* auto-show existing parent */ + go_to_file = nautilus_find_existing_uri_in_hierarchy (parent); + } + else + { + go_to_file = g_file_new_for_path (g_get_home_dir ()); + } - nautilus_window_slot_open_location_full (self, go_to_file, 0, NULL); + nautilus_window_slot_open_location_full (self, go_to_file, 0, NULL); - g_clear_object (&parent); - g_object_unref (go_to_file); - g_object_unref (location); - } - } else { - new_location = nautilus_file_get_location (file); - nautilus_window_slot_set_location (self, new_location); - g_object_unref (new_location); + g_clear_object (&parent); + g_object_unref (go_to_file); + g_object_unref (location); } + } + else + { + new_location = nautilus_file_get_location (file); + nautilus_window_slot_set_location (self, new_location); + g_object_unref (new_location); + } } static void nautilus_window_slot_go_home (NautilusWindowSlot *self, NautilusWindowOpenFlags flags) { - GFile *home; + GFile *home; - g_return_if_fail (NAUTILUS_IS_WINDOW_SLOT (self)); + g_return_if_fail (NAUTILUS_IS_WINDOW_SLOT (self)); - home = g_file_new_for_path (g_get_home_dir ()); - nautilus_window_slot_open_location_full (self, home, flags, NULL); - g_object_unref (home); + home = g_file_new_for_path (g_get_home_dir ()); + nautilus_window_slot_open_location_full (self, home, flags, NULL); + g_object_unref (home); } static void nautilus_window_slot_set_viewed_file (NautilusWindowSlot *self, NautilusFile *file) { - NautilusWindowSlotPrivate *priv; - NautilusFileAttributes attributes; + NautilusWindowSlotPrivate *priv; + NautilusFileAttributes attributes; - priv = nautilus_window_slot_get_instance_private (self); - if (priv->viewed_file == file) { - return; - } + priv = nautilus_window_slot_get_instance_private (self); + if (priv->viewed_file == file) + { + return; + } - nautilus_file_ref (file); + nautilus_file_ref (file); - if (priv->viewed_file != NULL) { - g_signal_handlers_disconnect_by_func (priv->viewed_file, - G_CALLBACK (viewed_file_changed_callback), - self); - nautilus_file_monitor_remove (priv->viewed_file, - self); - } + if (priv->viewed_file != NULL) + { + g_signal_handlers_disconnect_by_func (priv->viewed_file, + G_CALLBACK (viewed_file_changed_callback), + self); + nautilus_file_monitor_remove (priv->viewed_file, + self); + } - if (file != NULL) { - attributes = - NAUTILUS_FILE_ATTRIBUTE_INFO | - NAUTILUS_FILE_ATTRIBUTE_LINK_INFO; - nautilus_file_monitor_add (file, self, attributes); + if (file != NULL) + { + attributes = + NAUTILUS_FILE_ATTRIBUTE_INFO | + NAUTILUS_FILE_ATTRIBUTE_LINK_INFO; + nautilus_file_monitor_add (file, self, attributes); - g_signal_connect_object (file, "changed", - G_CALLBACK (viewed_file_changed_callback), self, 0); - } + g_signal_connect_object (file, "changed", + G_CALLBACK (viewed_file_changed_callback), self, 0); + } - nautilus_file_unref (priv->viewed_file); - priv->viewed_file = file; + nautilus_file_unref (priv->viewed_file); + priv->viewed_file = file; } -typedef struct { - GCancellable *cancellable; - NautilusWindowSlot *slot; +typedef struct +{ + GCancellable *cancellable; + NautilusWindowSlot *slot; } MountNotMountedData; static void @@ -1163,44 +1288,48 @@ mount_not_mounted_callback (GObject *source_object, GAsyncResult *res, gpointer user_data) { - NautilusWindowSlotPrivate *priv; - MountNotMountedData *data; - NautilusWindowSlot *self; - GError *error; - GCancellable *cancellable; - - data = user_data; - self = data->slot; - priv = nautilus_window_slot_get_instance_private (self); - cancellable = data->cancellable; - g_free (data); - - if (g_cancellable_is_cancelled (cancellable)) { - /* Cancelled, don't call back */ - g_object_unref (cancellable); - return; - } - - priv->mount_cancellable = NULL; - - priv->determine_view_file = nautilus_file_get (priv->pending_location); - - error = NULL; - if (!g_file_mount_enclosing_volume_finish (G_FILE (source_object), res, &error)) { - priv->mount_error = error; - got_file_info_for_view_selection_callback (priv->determine_view_file, self); - priv->mount_error = NULL; - g_error_free (error); - } else { - nautilus_file_invalidate_all_attributes (priv->determine_view_file); - nautilus_file_call_when_ready (priv->determine_view_file, - NAUTILUS_FILE_ATTRIBUTE_INFO | - NAUTILUS_FILE_ATTRIBUTE_MOUNT, - got_file_info_for_view_selection_callback, - self); - } - - g_object_unref (cancellable); + NautilusWindowSlotPrivate *priv; + MountNotMountedData *data; + NautilusWindowSlot *self; + GError *error; + GCancellable *cancellable; + + data = user_data; + self = data->slot; + priv = nautilus_window_slot_get_instance_private (self); + cancellable = data->cancellable; + g_free (data); + + if (g_cancellable_is_cancelled (cancellable)) + { + /* Cancelled, don't call back */ + g_object_unref (cancellable); + return; + } + + priv->mount_cancellable = NULL; + + priv->determine_view_file = nautilus_file_get (priv->pending_location); + + error = NULL; + if (!g_file_mount_enclosing_volume_finish (G_FILE (source_object), res, &error)) + { + priv->mount_error = error; + got_file_info_for_view_selection_callback (priv->determine_view_file, self); + priv->mount_error = NULL; + g_error_free (error); + } + else + { + nautilus_file_invalidate_all_attributes (priv->determine_view_file); + nautilus_file_call_when_ready (priv->determine_view_file, + NAUTILUS_FILE_ATTRIBUTE_INFO | + NAUTILUS_FILE_ATTRIBUTE_MOUNT, + got_file_info_for_view_selection_callback, + self); + } + + g_object_unref (cancellable); } static void @@ -1209,65 +1338,96 @@ nautilus_window_slot_display_view_selection_failure (NautilusWindow *window, GFile *location, GError *error) { - char *error_message; - char *detail_message; - char *scheme_string; - - /* Some sort of failure occurred. How 'bout we tell the user? */ - - error_message = g_strdup (_("Oops! Something went wrong.")); - detail_message = NULL; - if (error == NULL) { - if (nautilus_file_is_directory (file)) { - detail_message = g_strdup (_("Unable to display the contents of this folder.")); - } else { - detail_message = g_strdup (_("This location doesn't appear to be a folder.")); - } - } else if (error->domain == G_IO_ERROR) { - switch (error->code) { - case G_IO_ERROR_NOT_FOUND: - detail_message = g_strdup (_("Unable to find the requested file. Please check the spelling and try again.")); - break; - case G_IO_ERROR_NOT_SUPPORTED: - scheme_string = g_file_get_uri_scheme (location); - if (scheme_string != NULL) { - detail_message = g_strdup_printf (_("“%s” locations are not supported."), - scheme_string); - } else { - detail_message = g_strdup (_("Unable to handle this kind of location.")); - } - g_free (scheme_string); - break; - case G_IO_ERROR_NOT_MOUNTED: - detail_message = g_strdup (_("Unable to access the requested location.")); - break; - case G_IO_ERROR_PERMISSION_DENIED: - detail_message = g_strdup (_("Don't have permission to access the requested location.")); - break; - case G_IO_ERROR_HOST_NOT_FOUND: - /* This case can be hit for user-typed strings like "foo" due to - * the code that guesses web addresses when there's no initial "/". - * But this case is also hit for legitimate web addresses when - * the proxy is set up wrong. - */ - detail_message = g_strdup (_("Unable to find the requested location. Please check the spelling or the network settings.")); - break; - case G_IO_ERROR_CANCELLED: - case G_IO_ERROR_FAILED_HANDLED: - goto done; - default: - break; - } - } - - if (detail_message == NULL) { - detail_message = g_strdup_printf (_("Unhandled error message: %s"), error->message); - } - - eel_show_error_dialog (error_message, detail_message, GTK_WINDOW (window)); - done: - g_free (error_message); - g_free (detail_message); + char *error_message; + char *detail_message; + char *scheme_string; + + /* Some sort of failure occurred. How 'bout we tell the user? */ + + error_message = g_strdup (_("Oops! Something went wrong.")); + detail_message = NULL; + if (error == NULL) + { + if (nautilus_file_is_directory (file)) + { + detail_message = g_strdup (_("Unable to display the contents of this folder.")); + } + else + { + detail_message = g_strdup (_("This location doesn't appear to be a folder.")); + } + } + else if (error->domain == G_IO_ERROR) + { + switch (error->code) + { + case G_IO_ERROR_NOT_FOUND: + { + detail_message = g_strdup (_("Unable to find the requested file. Please check the spelling and try again.")); + } + break; + + case G_IO_ERROR_NOT_SUPPORTED: + { + scheme_string = g_file_get_uri_scheme (location); + if (scheme_string != NULL) + { + detail_message = g_strdup_printf (_("“%s” locations are not supported."), + scheme_string); + } + else + { + detail_message = g_strdup (_("Unable to handle this kind of location.")); + } + g_free (scheme_string); + } + break; + + case G_IO_ERROR_NOT_MOUNTED: + { + detail_message = g_strdup (_("Unable to access the requested location.")); + } + break; + + case G_IO_ERROR_PERMISSION_DENIED: + { + detail_message = g_strdup (_("Don't have permission to access the requested location.")); + } + break; + + case G_IO_ERROR_HOST_NOT_FOUND: + { + /* This case can be hit for user-typed strings like "foo" due to + * the code that guesses web addresses when there's no initial "/". + * But this case is also hit for legitimate web addresses when + * the proxy is set up wrong. + */ + detail_message = g_strdup (_("Unable to find the requested location. Please check the spelling or the network settings.")); + } + break; + + case G_IO_ERROR_CANCELLED: + case G_IO_ERROR_FAILED_HANDLED: + { + goto done; + } + + default: + { + } + break; + } + } + + if (detail_message == NULL) + { + detail_message = g_strdup_printf (_("Unhandled error message: %s"), error->message); + } + + eel_show_error_dialog (error_message, detail_message, GTK_WINDOW (window)); +done: + g_free (error_message); + g_free (detail_message); } /* FIXME: This works in the folowwing way. begin_location_change tries to get the @@ -1291,199 +1451,231 @@ static gboolean handle_mount_if_needed (NautilusWindowSlot *self, NautilusFile *file) { - NautilusWindowSlotPrivate *priv; - NautilusWindow *window; - GMountOperation *mount_op; - MountNotMountedData *data; - GFile *location; - GError *error = NULL; - gboolean needs_mount_handling = FALSE; - - priv = nautilus_window_slot_get_instance_private (self); - window = nautilus_window_slot_get_window (self); - if (priv->mount_error) { - error = g_error_copy (priv->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 && - !priv->tried_mount) { - priv->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); - location = nautilus_file_get_location (file); - data = g_new0 (MountNotMountedData, 1); - data->cancellable = g_cancellable_new (); - data->slot = self; - priv->mount_cancellable = data->cancellable; - g_file_mount_enclosing_volume (location, 0, mount_op, priv->mount_cancellable, - mount_not_mounted_callback, data); - g_object_unref (location); - g_object_unref (mount_op); - - needs_mount_handling = TRUE; - } - - g_clear_error (&error); - - return needs_mount_handling; + NautilusWindowSlotPrivate *priv; + NautilusWindow *window; + GMountOperation *mount_op; + MountNotMountedData *data; + GFile *location; + GError *error = NULL; + gboolean needs_mount_handling = FALSE; + + priv = nautilus_window_slot_get_instance_private (self); + window = nautilus_window_slot_get_window (self); + if (priv->mount_error) + { + error = g_error_copy (priv->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 && + !priv->tried_mount) + { + priv->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); + location = nautilus_file_get_location (file); + data = g_new0 (MountNotMountedData, 1); + data->cancellable = g_cancellable_new (); + data->slot = self; + priv->mount_cancellable = data->cancellable; + g_file_mount_enclosing_volume (location, 0, mount_op, priv->mount_cancellable, + mount_not_mounted_callback, data); + g_object_unref (location); + g_object_unref (mount_op); + + needs_mount_handling = TRUE; + } + + g_clear_error (&error); + + return needs_mount_handling; } static gboolean handle_regular_file_if_needed (NautilusWindowSlot *self, NautilusFile *file) { - NautilusFile *parent_file; - gboolean needs_regular_file_handling = FALSE; - NautilusWindowSlotPrivate *priv; - - priv = nautilus_window_slot_get_instance_private (self); - parent_file = nautilus_file_get_parent (file); - if ((parent_file != NULL) && - nautilus_file_get_file_type (file) == G_FILE_TYPE_REGULAR) { - if (priv->pending_selection != NULL) { - nautilus_file_list_free (priv->pending_selection); - } + NautilusFile *parent_file; + gboolean needs_regular_file_handling = FALSE; + NautilusWindowSlotPrivate *priv; + + priv = nautilus_window_slot_get_instance_private (self); + parent_file = nautilus_file_get_parent (file); + if ((parent_file != NULL) && + nautilus_file_get_file_type (file) == G_FILE_TYPE_REGULAR) + { + if (priv->pending_selection != NULL) + { + nautilus_file_list_free (priv->pending_selection); + } - g_clear_object (&priv->pending_location); - g_free (priv->pending_scroll_to); + g_clear_object (&priv->pending_location); + g_free (priv->pending_scroll_to); - priv->pending_location = nautilus_file_get_parent_location (file); - priv->pending_selection = g_list_prepend (NULL, nautilus_file_ref (file)); - priv->determine_view_file = nautilus_file_ref (parent_file); - priv->pending_scroll_to = nautilus_file_get_uri (file); + priv->pending_location = nautilus_file_get_parent_location (file); + priv->pending_selection = g_list_prepend (NULL, nautilus_file_ref (file)); + priv->determine_view_file = nautilus_file_ref (parent_file); + priv->pending_scroll_to = nautilus_file_get_uri (file); - nautilus_file_invalidate_all_attributes (priv->determine_view_file); - nautilus_file_call_when_ready (priv->determine_view_file, - NAUTILUS_FILE_ATTRIBUTE_INFO | - NAUTILUS_FILE_ATTRIBUTE_MOUNT, - got_file_info_for_view_selection_callback, - self); + nautilus_file_invalidate_all_attributes (priv->determine_view_file); + nautilus_file_call_when_ready (priv->determine_view_file, + NAUTILUS_FILE_ATTRIBUTE_INFO | + NAUTILUS_FILE_ATTRIBUTE_MOUNT, + got_file_info_for_view_selection_callback, + self); - needs_regular_file_handling = TRUE; - } + needs_regular_file_handling = TRUE; + } - nautilus_file_unref (parent_file); + nautilus_file_unref (parent_file); - return needs_regular_file_handling; + return needs_regular_file_handling; } static void got_file_info_for_view_selection_callback (NautilusFile *file, gpointer callback_data) { - NautilusWindowSlotPrivate *priv; - GError *error = NULL; - NautilusWindow *window; - NautilusWindowSlot *self; - NautilusFile *viewed_file; - NautilusView *view; - GFile *location; - - NautilusApplication *app; - - self = callback_data; - priv = nautilus_window_slot_get_instance_private (self); - window = nautilus_window_slot_get_window (self); - - g_assert (priv->determine_view_file == file); - priv->determine_view_file = NULL; - - nautilus_profile_start (NULL); - - if (handle_mount_if_needed (self, file)) - goto done; - - if (handle_regular_file_if_needed (self, file)) - goto done; - - if (priv->mount_error) { - error = g_error_copy (priv->mount_error); - } else if (nautilus_file_get_file_info_error (file) != NULL) { - error = g_error_copy (nautilus_file_get_file_info_error (file)); + NautilusWindowSlotPrivate *priv; + GError *error = NULL; + NautilusWindow *window; + NautilusWindowSlot *self; + NautilusFile *viewed_file; + NautilusView *view; + GFile *location; + + NautilusApplication *app; + + self = callback_data; + priv = nautilus_window_slot_get_instance_private (self); + window = nautilus_window_slot_get_window (self); + + g_assert (priv->determine_view_file == file); + priv->determine_view_file = NULL; + + nautilus_profile_start (NULL); + + if (handle_mount_if_needed (self, file)) + { + goto done; + } + + if (handle_regular_file_if_needed (self, file)) + { + goto done; + } + + if (priv->mount_error) + { + error = g_error_copy (priv->mount_error); + } + else if (nautilus_file_get_file_info_error (file) != NULL) + { + error = g_error_copy (nautilus_file_get_file_info_error (file)); + } + + location = priv->pending_location; + + /* desktop and other-locations GFile operations report G_IO_ERROR_NOT_SUPPORTED, + * but it's not an actual error for Nautilus */ + if (!error || g_error_matches (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED)) + { + view = nautilus_window_slot_get_view_for_location (self, location); + setup_view (self, view); + } + else + { + if (error == NULL) + { + error = g_error_new (G_IO_ERROR, G_IO_ERROR_NOT_FOUND, + _("Unable to load location")); + } + nautilus_window_slot_display_view_selection_failure (window, + file, + location, + error); + + if (!gtk_widget_get_visible (GTK_WIDGET (window))) + { + /* Destroy never-had-a-chance-to-be-seen window. This case + * happens when a new window cannot display its initial URI. + */ + /* if this is the only window, we don't want to quit, so we redirect it to home */ + + app = NAUTILUS_APPLICATION (g_application_get_default ()); + + if (g_list_length (nautilus_application_get_windows (app)) == 1) + { + /* the user could have typed in a home directory that doesn't exist, + * in which case going home would cause an infinite loop, so we + * better test for that */ + + if (!nautilus_is_root_directory (location)) + { + if (!nautilus_is_home_directory (location)) + { + nautilus_window_slot_go_home (self, FALSE); + } + else + { + GFile *root; + + root = g_file_new_for_path ("/"); + /* the last fallback is to go to a known place that can't be deleted! */ + nautilus_window_slot_open_location_full (self, location, 0, NULL); + g_object_unref (root); + } + } + else + { + gtk_widget_destroy (GTK_WIDGET (window)); + } + } + else + { + /* Since this is a window, destroying it will also unref it. */ + gtk_widget_destroy (GTK_WIDGET (window)); + } + } + else + { + GFile *slot_location; + + /* Clean up state of already-showing window */ + end_location_change (self); + slot_location = nautilus_window_slot_get_location (self); + + /* We're missing a previous location (if opened location + * in a new tab) so close it and return */ + if (slot_location == NULL) + { + nautilus_window_slot_close (window, self); + } + else + { + /* We disconnected this, so we need to re-connect it */ + viewed_file = nautilus_file_get (slot_location); + nautilus_window_slot_set_viewed_file (self, viewed_file); + nautilus_file_unref (viewed_file); + + /* Leave the location bar showing the bad location that the user + * typed (or maybe achieved by dragging or something). Many times + * the mistake will just be an easily-correctable typo. The user + * can choose "Refresh" to get the original URI back in the location bar. + */ + } } + } + +done: + g_clear_error (&error); - location = priv->pending_location; - - /* desktop and other-locations GFile operations report G_IO_ERROR_NOT_SUPPORTED, - * but it's not an actual error for Nautilus */ - if (!error || g_error_matches (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED)) { - view = nautilus_window_slot_get_view_for_location (self, location); - setup_view (self, view); - } else { - if (error == NULL) { - error = g_error_new (G_IO_ERROR, G_IO_ERROR_NOT_FOUND, - _("Unable to load location")); - } - nautilus_window_slot_display_view_selection_failure (window, - file, - location, - error); - - if (!gtk_widget_get_visible (GTK_WIDGET (window))) { - /* Destroy never-had-a-chance-to-be-seen window. This case - * happens when a new window cannot display its initial URI. - */ - /* if this is the only window, we don't want to quit, so we redirect it to home */ - - app = NAUTILUS_APPLICATION (g_application_get_default ()); - - if (g_list_length (nautilus_application_get_windows (app)) == 1) { - /* the user could have typed in a home directory that doesn't exist, - in which case going home would cause an infinite loop, so we - better test for that */ - - if (!nautilus_is_root_directory (location)) { - if (!nautilus_is_home_directory (location)) { - nautilus_window_slot_go_home (self, FALSE); - } else { - GFile *root; - - root = g_file_new_for_path ("/"); - /* the last fallback is to go to a known place that can't be deleted! */ - nautilus_window_slot_open_location_full (self, location, 0, NULL); - g_object_unref (root); - } - } else { - gtk_widget_destroy (GTK_WIDGET (window)); - } - } else { - /* Since this is a window, destroying it will also unref it. */ - gtk_widget_destroy (GTK_WIDGET (window)); - } - } else { - GFile *slot_location; - - /* Clean up state of already-showing window */ - end_location_change (self); - slot_location = nautilus_window_slot_get_location (self); - - /* We're missing a previous location (if opened location - * in a new tab) so close it and return */ - if (slot_location == NULL) { - nautilus_window_slot_close (window, self); - } else { - /* We disconnected this, so we need to re-connect it */ - viewed_file = nautilus_file_get (slot_location); - nautilus_window_slot_set_viewed_file (self, viewed_file); - nautilus_file_unref (viewed_file); - - /* Leave the location bar showing the bad location that the user - * typed (or maybe achieved by dragging or something). Many times - * the mistake will just be an easily-correctable typo. The user - * can choose "Refresh" to get the original URI back in the location bar. - */ - } - } - } - - done: - g_clear_error (&error); - - nautilus_file_unref (file); - nautilus_profile_end (NULL); + nautilus_file_unref (file); + nautilus_profile_end (NULL); } /* Load a view into the window, either reusing the old one or creating @@ -1497,55 +1689,60 @@ static gboolean setup_view (NautilusWindowSlot *self, NautilusView *view) { - gboolean ret = TRUE; - GFile *old_location; - NautilusWindowSlotPrivate *priv; - - nautilus_profile_start (NULL); + gboolean ret = TRUE; + GFile *old_location; + NautilusWindowSlotPrivate *priv; - priv = nautilus_window_slot_get_instance_private (self); - nautilus_window_slot_disconnect_content_view (self); + nautilus_profile_start (NULL); - priv->new_content_view = view; + priv = nautilus_window_slot_get_instance_private (self); + nautilus_window_slot_disconnect_content_view (self); - nautilus_window_slot_connect_new_content_view (self); + priv->new_content_view = view; - /* Forward search selection and state before loading the new model */ - old_location = priv->content_view ? nautilus_view_get_location (priv->content_view) : NULL; + nautilus_window_slot_connect_new_content_view (self); - /* Actually load the pending location and selection: */ - if (priv->pending_location != NULL) { - load_new_location (self, - priv->pending_location, - priv->pending_selection, - FALSE, - TRUE); + /* Forward search selection and state before loading the new model */ + old_location = priv->content_view ? nautilus_view_get_location (priv->content_view) : NULL; - nautilus_file_list_free (priv->pending_selection); - priv->pending_selection = NULL; - } else if (old_location != NULL) { - GList *selection; + /* Actually load the pending location and selection: */ + if (priv->pending_location != NULL) + { + load_new_location (self, + priv->pending_location, + priv->pending_selection, + FALSE, + TRUE); - selection = nautilus_view_get_selection (priv->content_view); + nautilus_file_list_free (priv->pending_selection); + priv->pending_selection = NULL; + } + else if (old_location != NULL) + { + GList *selection; - load_new_location (self, - old_location, - selection, - FALSE, - TRUE); - nautilus_file_list_free (selection); - } else { - ret = FALSE; - goto out; - } + selection = nautilus_view_get_selection (priv->content_view); - change_view (self); - gtk_widget_show (GTK_WIDGET (priv->window)); + load_new_location (self, + old_location, + selection, + FALSE, + TRUE); + nautilus_file_list_free (selection); + } + else + { + ret = FALSE; + goto out; + } + + change_view (self); + gtk_widget_show (GTK_WIDGET (priv->window)); out: - nautilus_profile_end (NULL); + nautilus_profile_end (NULL); - return ret; + return ret; } static void @@ -1555,317 +1752,343 @@ load_new_location (NautilusWindowSlot *self, gboolean tell_current_content_view, gboolean tell_new_content_view) { - NautilusView *view; - NautilusWindowSlotPrivate *priv; + NautilusView *view; + NautilusWindowSlotPrivate *priv; - g_assert (self != NULL); - g_assert (location != NULL); + g_assert (self != NULL); + g_assert (location != NULL); - view = NULL; - priv = nautilus_window_slot_get_instance_private (self); + view = NULL; + priv = nautilus_window_slot_get_instance_private (self); - nautilus_profile_start (NULL); - /* Note, these may recurse into report_load_underway */ - if (priv->content_view != NULL && tell_current_content_view) { - view = priv->content_view; - nautilus_view_set_location (priv->content_view, location); - } + nautilus_profile_start (NULL); + /* Note, these may recurse into report_load_underway */ + if (priv->content_view != NULL && tell_current_content_view) + { + view = priv->content_view; + nautilus_view_set_location (priv->content_view, location); + } - if (priv->new_content_view != NULL && tell_new_content_view && - (!tell_current_content_view || - priv->new_content_view != priv->content_view) ) { - view = priv->new_content_view; - nautilus_view_set_location (priv->new_content_view, location); - } - if (view) { - /* new_content_view might have changed here if - report_load_underway was called from load_location */ - nautilus_view_set_selection (view, selection); - } + if (priv->new_content_view != NULL && tell_new_content_view && + (!tell_current_content_view || + priv->new_content_view != priv->content_view)) + { + view = priv->new_content_view; + nautilus_view_set_location (priv->new_content_view, location); + } + if (view) + { + /* new_content_view might have changed here if + * report_load_underway was called from load_location */ + nautilus_view_set_selection (view, selection); + } - nautilus_profile_end (NULL); + nautilus_profile_end (NULL); } static void end_location_change (NautilusWindowSlot *self) { - char *uri; - NautilusWindowSlotPrivate *priv; + char *uri; + NautilusWindowSlotPrivate *priv; - priv = nautilus_window_slot_get_instance_private (self); - uri = nautilus_window_slot_get_location_uri (self); - if (uri) { - DEBUG ("Finished loading window for uri %s", uri); - g_free (uri); - } + priv = nautilus_window_slot_get_instance_private (self); + uri = nautilus_window_slot_get_location_uri (self); + if (uri) + { + DEBUG ("Finished loading window for uri %s", uri); + g_free (uri); + } - nautilus_window_slot_set_allow_stop (self, FALSE); + nautilus_window_slot_set_allow_stop (self, FALSE); - /* Now we can free details->pending_scroll_to, since the load_complete - * callback already has been emitted. - */ - g_free (priv->pending_scroll_to); - priv->pending_scroll_to = NULL; + /* Now we can free details->pending_scroll_to, since the load_complete + * callback already has been emitted. + */ + g_free (priv->pending_scroll_to); + priv->pending_scroll_to = NULL; - free_location_change (self); + free_location_change (self); } static void free_location_change (NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - priv = nautilus_window_slot_get_instance_private (self); - g_clear_object (&priv->pending_location); - nautilus_file_list_free (priv->pending_selection); - priv->pending_selection = NULL; + priv = nautilus_window_slot_get_instance_private (self); + g_clear_object (&priv->pending_location); + nautilus_file_list_free (priv->pending_selection); + priv->pending_selection = NULL; - /* Don't free details->pending_scroll_to, since thats needed until - * the load_complete callback. - */ + /* Don't free details->pending_scroll_to, since thats needed until + * the load_complete callback. + */ - if (priv->mount_cancellable != NULL) { - g_cancellable_cancel (priv->mount_cancellable); - priv->mount_cancellable = NULL; - } + if (priv->mount_cancellable != NULL) + { + g_cancellable_cancel (priv->mount_cancellable); + priv->mount_cancellable = NULL; + } - if (priv->determine_view_file != NULL) { - nautilus_file_cancel_call_when_ready - (priv->determine_view_file, - got_file_info_for_view_selection_callback, self); - priv->determine_view_file = NULL; - } + if (priv->determine_view_file != NULL) + { + nautilus_file_cancel_call_when_ready + (priv->determine_view_file, + got_file_info_for_view_selection_callback, self); + priv->determine_view_file = NULL; + } } static void nautilus_window_slot_set_content_view (NautilusWindowSlot *self, - guint id) + guint id) { - NautilusFilesView *view; - GList *selection; - char *uri; - NautilusWindowSlotPrivate *priv; + NautilusFilesView *view; + GList *selection; + char *uri; + NautilusWindowSlotPrivate *priv; - g_assert (self != NULL); + g_assert (self != NULL); - priv = nautilus_window_slot_get_instance_private (self); - uri = nautilus_window_slot_get_location_uri (self); - DEBUG ("Change view of window %s to %d", uri, id); - g_free (uri); + priv = nautilus_window_slot_get_instance_private (self); + uri = nautilus_window_slot_get_location_uri (self); + DEBUG ("Change view of window %s to %d", uri, id); + g_free (uri); - if (nautilus_window_slot_content_view_matches (self, id)) { - return; - } + if (nautilus_window_slot_content_view_matches (self, id)) + { + return; + } - selection = nautilus_view_get_selection (priv->content_view); - view = nautilus_files_view_new (id, self); + selection = nautilus_view_get_selection (priv->content_view); + view = nautilus_files_view_new (id, self); - nautilus_window_slot_stop_loading (self); + nautilus_window_slot_stop_loading (self); - nautilus_window_slot_set_allow_stop (self, TRUE); + nautilus_window_slot_set_allow_stop (self, TRUE); - if (g_list_length (selection) == 0 && NAUTILUS_IS_FILES_VIEW (priv->content_view)) { - /* If there is no selection, queue a scroll to the same icon that - * is currently visible */ - priv->pending_scroll_to = nautilus_files_view_get_first_visible_file (NAUTILUS_FILES_VIEW (priv->content_view)); - } + if (g_list_length (selection) == 0 && NAUTILUS_IS_FILES_VIEW (priv->content_view)) + { + /* If there is no selection, queue a scroll to the same icon that + * is currently visible */ + priv->pending_scroll_to = nautilus_files_view_get_first_visible_file (NAUTILUS_FILES_VIEW (priv->content_view)); + } - priv->location_change_type = NAUTILUS_LOCATION_CHANGE_RELOAD; + priv->location_change_type = NAUTILUS_LOCATION_CHANGE_RELOAD; - if (!setup_view (self, NAUTILUS_VIEW (view))) { - /* Just load the homedir. */ - nautilus_window_slot_go_home (self, FALSE); - } + if (!setup_view (self, NAUTILUS_VIEW (view))) + { + /* Just load the homedir. */ + nautilus_window_slot_go_home (self, FALSE); + } } void -nautilus_window_back_or_forward (NautilusWindow *window, - gboolean back, - guint distance, - NautilusWindowOpenFlags flags) -{ - NautilusWindowSlot *self; - GList *list; - GFile *location; - guint len; - NautilusBookmark *bookmark; - GFile *old_location; - NautilusWindowSlotPrivate *priv; - - self = nautilus_window_get_active_slot (window); - priv = nautilus_window_slot_get_instance_private (self); - list = back ? priv->back_list : priv->forward_list; - - len = (guint) g_list_length (list); - - /* If we can't move in the direction at all, just return. */ - if (len == 0) - return; - - /* If the distance to move is off the end of the list, go to the end - of the list. */ - if (distance >= len) - distance = len - 1; - - bookmark = g_list_nth_data (list, distance); - location = nautilus_bookmark_get_location (bookmark); - - if (flags != 0) { - nautilus_window_slot_open_location_full (self, location, flags, NULL); - } else { - char *scroll_pos; +nautilus_window_back_or_forward (NautilusWindow *window, + gboolean back, + guint distance, + NautilusWindowOpenFlags flags) +{ + NautilusWindowSlot *self; + GList *list; + GFile *location; + guint len; + NautilusBookmark *bookmark; + GFile *old_location; + NautilusWindowSlotPrivate *priv; + + self = nautilus_window_get_active_slot (window); + priv = nautilus_window_slot_get_instance_private (self); + list = back ? priv->back_list : priv->forward_list; + + len = (guint) g_list_length (list); + + /* If we can't move in the direction at all, just return. */ + if (len == 0) + { + return; + } + + /* If the distance to move is off the end of the list, go to the end + * of the list. */ + if (distance >= len) + { + distance = len - 1; + } + + bookmark = g_list_nth_data (list, distance); + location = nautilus_bookmark_get_location (bookmark); + + if (flags != 0) + { + nautilus_window_slot_open_location_full (self, location, flags, NULL); + } + else + { + char *scroll_pos; - old_location = nautilus_window_slot_get_location (self); - scroll_pos = nautilus_bookmark_get_scroll_pos (bookmark); - begin_location_change - (self, - location, old_location, NULL, - back ? NAUTILUS_LOCATION_CHANGE_BACK : NAUTILUS_LOCATION_CHANGE_FORWARD, - distance, - scroll_pos); + old_location = nautilus_window_slot_get_location (self); + scroll_pos = nautilus_bookmark_get_scroll_pos (bookmark); + begin_location_change + (self, + location, old_location, NULL, + back ? NAUTILUS_LOCATION_CHANGE_BACK : NAUTILUS_LOCATION_CHANGE_FORWARD, + distance, + scroll_pos); - g_free (scroll_pos); - } + g_free (scroll_pos); + } - g_object_unref (location); + g_object_unref (location); } /* reload the contents of the window */ static void nautilus_window_slot_force_reload (NautilusWindowSlot *self) { - GFile *location; - char *current_pos; - GList *selection; - NautilusWindowSlotPrivate *priv; - - g_assert (NAUTILUS_IS_WINDOW_SLOT (self)); - - priv = nautilus_window_slot_get_instance_private (self); - location = nautilus_window_slot_get_location (self); - if (location == NULL) { - return; - } - - /* peek_slot_field (window, location) can be free'd during the processing - * of begin_location_change, so make a copy - */ - g_object_ref (location); - current_pos = NULL; - selection = NULL; - if (priv->new_content_view) { - selection = nautilus_view_get_selection (priv->content_view); - - if (NAUTILUS_IS_FILES_VIEW (priv->new_content_view)) { - current_pos = nautilus_files_view_get_first_visible_file (NAUTILUS_FILES_VIEW (priv->content_view)); - } - } - begin_location_change - (self, location, location, selection, - NAUTILUS_LOCATION_CHANGE_RELOAD, 0, current_pos); - g_free (current_pos); - g_object_unref (location); - nautilus_file_list_free (selection); + GFile *location; + char *current_pos; + GList *selection; + NautilusWindowSlotPrivate *priv; + + g_assert (NAUTILUS_IS_WINDOW_SLOT (self)); + + priv = nautilus_window_slot_get_instance_private (self); + location = nautilus_window_slot_get_location (self); + if (location == NULL) + { + return; + } + + /* peek_slot_field (window, location) can be free'd during the processing + * of begin_location_change, so make a copy + */ + g_object_ref (location); + current_pos = NULL; + selection = NULL; + if (priv->new_content_view) + { + selection = nautilus_view_get_selection (priv->content_view); + + if (NAUTILUS_IS_FILES_VIEW (priv->new_content_view)) + { + current_pos = nautilus_files_view_get_first_visible_file (NAUTILUS_FILES_VIEW (priv->content_view)); + } + } + begin_location_change + (self, location, location, selection, + NAUTILUS_LOCATION_CHANGE_RELOAD, 0, current_pos); + g_free (current_pos); + g_object_unref (location); + nautilus_file_list_free (selection); } void nautilus_window_slot_queue_reload (NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - g_assert (NAUTILUS_IS_WINDOW_SLOT (self)); + g_assert (NAUTILUS_IS_WINDOW_SLOT (self)); - priv = nautilus_window_slot_get_instance_private (self); - if (nautilus_window_slot_get_location (self) == NULL) { - return; - } + priv = nautilus_window_slot_get_instance_private (self); + if (nautilus_window_slot_get_location (self) == NULL) + { + return; + } - if (priv->pending_location != NULL - || priv->content_view == NULL - || nautilus_view_is_loading (priv->content_view)) { - /* there is a reload in flight */ - priv->needs_reload = TRUE; - return; - } + if (priv->pending_location != NULL + || priv->content_view == NULL + || nautilus_view_is_loading (priv->content_view)) + { + /* there is a reload in flight */ + priv->needs_reload = TRUE; + return; + } - nautilus_window_slot_force_reload (self); + nautilus_window_slot_force_reload (self); } static void nautilus_window_slot_clear_forward_list (NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - g_assert (NAUTILUS_IS_WINDOW_SLOT (self)); + g_assert (NAUTILUS_IS_WINDOW_SLOT (self)); - priv = nautilus_window_slot_get_instance_private (self); - g_list_free_full (priv->forward_list, g_object_unref); - priv->forward_list = NULL; + priv = nautilus_window_slot_get_instance_private (self); + g_list_free_full (priv->forward_list, g_object_unref); + priv->forward_list = NULL; } static void nautilus_window_slot_clear_back_list (NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - g_assert (NAUTILUS_IS_WINDOW_SLOT (self)); + g_assert (NAUTILUS_IS_WINDOW_SLOT (self)); - priv = nautilus_window_slot_get_instance_private (self); - g_list_free_full (priv->back_list, g_object_unref); - priv->back_list = NULL; + priv = nautilus_window_slot_get_instance_private (self); + g_list_free_full (priv->back_list, g_object_unref); + priv->back_list = NULL; } static void nautilus_window_slot_update_bookmark (NautilusWindowSlot *self, NautilusFile *file) { - gboolean recreate; - GFile *new_location; - NautilusWindowSlotPrivate *priv; + gboolean recreate; + GFile *new_location; + NautilusWindowSlotPrivate *priv; - priv = nautilus_window_slot_get_instance_private (self); - new_location = nautilus_file_get_location (file); + priv = nautilus_window_slot_get_instance_private (self); + new_location = nautilus_file_get_location (file); - if (priv->current_location_bookmark == NULL) { - recreate = TRUE; - } else { - GFile *bookmark_location; - bookmark_location = nautilus_bookmark_get_location (priv->current_location_bookmark); - recreate = !g_file_equal (bookmark_location, new_location); - g_object_unref (bookmark_location); - } + if (priv->current_location_bookmark == NULL) + { + recreate = TRUE; + } + else + { + GFile *bookmark_location; + bookmark_location = nautilus_bookmark_get_location (priv->current_location_bookmark); + recreate = !g_file_equal (bookmark_location, new_location); + g_object_unref (bookmark_location); + } - if (recreate) { - char *display_name = NULL; + if (recreate) + { + char *display_name = NULL; - /* We've changed locations, must recreate bookmark for current location. */ - g_clear_object (&priv->last_location_bookmark); - priv->last_location_bookmark = priv->current_location_bookmark; + /* We've changed locations, must recreate bookmark for current location. */ + g_clear_object (&priv->last_location_bookmark); + priv->last_location_bookmark = priv->current_location_bookmark; - display_name = nautilus_file_get_display_name (file); - priv->current_location_bookmark = nautilus_bookmark_new (new_location, display_name); - g_free (display_name); - } + display_name = nautilus_file_get_display_name (file); + priv->current_location_bookmark = nautilus_bookmark_new (new_location, display_name); + g_free (display_name); + } - g_object_unref (new_location); + g_object_unref (new_location); } static void check_bookmark_location_matches (NautilusBookmark *bookmark, GFile *location) { - GFile *bookmark_location; - char *bookmark_uri, *uri; + GFile *bookmark_location; + char *bookmark_uri, *uri; - bookmark_location = nautilus_bookmark_get_location (bookmark); - if (!g_file_equal (location, bookmark_location)) { - bookmark_uri = g_file_get_uri (bookmark_location); - uri = g_file_get_uri (location); - g_warning ("bookmark uri is %s, but expected %s", bookmark_uri, uri); - g_free (uri); - g_free (bookmark_uri); - } - g_object_unref (bookmark_location); + bookmark_location = nautilus_bookmark_get_location (bookmark); + if (!g_file_equal (location, bookmark_location)) + { + bookmark_uri = g_file_get_uri (bookmark_location); + uri = g_file_get_uri (location); + g_warning ("bookmark uri is %s, but expected %s", bookmark_uri, uri); + g_free (uri); + g_free (bookmark_uri); + } + g_object_unref (bookmark_location); } /* Debugging function used to verify that the last_location_bookmark @@ -1875,86 +2098,89 @@ check_bookmark_location_matches (NautilusBookmark *bookmark, static void check_last_bookmark_location_matches_slot (NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - priv = nautilus_window_slot_get_instance_private (self); - check_bookmark_location_matches (priv->last_location_bookmark, - nautilus_window_slot_get_location (self)); + priv = nautilus_window_slot_get_instance_private (self); + check_bookmark_location_matches (priv->last_location_bookmark, + nautilus_window_slot_get_location (self)); } static void handle_go_direction (NautilusWindowSlot *self, - GFile *location, - gboolean forward) -{ - GList **list_ptr, **other_list_ptr; - GList *list, *other_list, *link; - NautilusBookmark *bookmark; - gint i; - NautilusWindowSlotPrivate *priv; - - priv = nautilus_window_slot_get_instance_private (self); - list_ptr = (forward) ? (&priv->forward_list) : (&priv->back_list); - other_list_ptr = (forward) ? (&priv->back_list) : (&priv->forward_list); - list = *list_ptr; - other_list = *other_list_ptr; - - /* Move items from the list to the other list. */ - g_assert (g_list_length (list) > priv->location_change_distance); - check_bookmark_location_matches (g_list_nth_data (list, priv->location_change_distance), - location); - g_assert (nautilus_window_slot_get_location (self) != NULL); - - /* Move current location to list */ - check_last_bookmark_location_matches_slot (self); - - /* Use the first bookmark in the history list rather than creating a new one. */ - other_list = g_list_prepend (other_list, priv->last_location_bookmark); - g_object_ref (other_list->data); - - /* Move extra links from the list to the other list */ - for (i = 0; i < priv->location_change_distance; ++i) { - bookmark = NAUTILUS_BOOKMARK (list->data); - list = g_list_remove (list, bookmark); - other_list = g_list_prepend (other_list, bookmark); - } - - /* One bookmark falls out of back/forward lists and becomes viewed location */ - link = list; - list = g_list_remove_link (list, link); - g_object_unref (link->data); - g_list_free_1 (link); - - *list_ptr = list; - *other_list_ptr = other_list; + GFile *location, + gboolean forward) +{ + GList **list_ptr, **other_list_ptr; + GList *list, *other_list, *link; + NautilusBookmark *bookmark; + gint i; + NautilusWindowSlotPrivate *priv; + + priv = nautilus_window_slot_get_instance_private (self); + list_ptr = (forward) ? (&priv->forward_list) : (&priv->back_list); + other_list_ptr = (forward) ? (&priv->back_list) : (&priv->forward_list); + list = *list_ptr; + other_list = *other_list_ptr; + + /* Move items from the list to the other list. */ + g_assert (g_list_length (list) > priv->location_change_distance); + check_bookmark_location_matches (g_list_nth_data (list, priv->location_change_distance), + location); + g_assert (nautilus_window_slot_get_location (self) != NULL); + + /* Move current location to list */ + check_last_bookmark_location_matches_slot (self); + + /* Use the first bookmark in the history list rather than creating a new one. */ + other_list = g_list_prepend (other_list, priv->last_location_bookmark); + g_object_ref (other_list->data); + + /* Move extra links from the list to the other list */ + for (i = 0; i < priv->location_change_distance; ++i) + { + bookmark = NAUTILUS_BOOKMARK (list->data); + list = g_list_remove (list, bookmark); + other_list = g_list_prepend (other_list, bookmark); + } + + /* One bookmark falls out of back/forward lists and becomes viewed location */ + link = list; + list = g_list_remove_link (list, link); + g_object_unref (link->data); + g_list_free_1 (link); + + *list_ptr = list; + *other_list_ptr = other_list; } static void handle_go_elsewhere (NautilusWindowSlot *self, GFile *location) { - GFile *slot_location; - NautilusWindowSlotPrivate *priv; - - priv = nautilus_window_slot_get_instance_private (self); - /* Clobber the entire forward list, and move displayed location to back list */ - nautilus_window_slot_clear_forward_list (self); - slot_location = nautilus_window_slot_get_location (self); - - if (slot_location != NULL) { - /* If we're returning to the same uri somehow, don't put this uri on back list. - * This also avoids a problem where set_displayed_location - * didn't update last_location_bookmark since the uri didn't change. - */ - if (!g_file_equal (slot_location, location)) { - /* Store bookmark for current location in back list, unless there is no current location */ - check_last_bookmark_location_matches_slot (self); - /* Use the first bookmark in the history list rather than creating a new one. */ - priv->back_list = g_list_prepend (priv->back_list, - priv->last_location_bookmark); - g_object_ref (priv->back_list->data); - } - } + GFile *slot_location; + NautilusWindowSlotPrivate *priv; + + priv = nautilus_window_slot_get_instance_private (self); + /* Clobber the entire forward list, and move displayed location to back list */ + nautilus_window_slot_clear_forward_list (self); + slot_location = nautilus_window_slot_get_location (self); + + if (slot_location != NULL) + { + /* If we're returning to the same uri somehow, don't put this uri on back list. + * This also avoids a problem where set_displayed_location + * didn't update last_location_bookmark since the uri didn't change. + */ + if (!g_file_equal (slot_location, location)) + { + /* Store bookmark for current location in back list, unless there is no current location */ + check_last_bookmark_location_matches_slot (self); + /* Use the first bookmark in the history list rather than creating a new one. */ + priv->back_list = g_list_prepend (priv->back_list, + priv->last_location_bookmark); + g_object_ref (priv->back_list->data); + } + } } static void @@ -1962,27 +2188,38 @@ update_history (NautilusWindowSlot *self, NautilusLocationChangeType type, GFile *new_location) { - switch (type) { + switch (type) + { case NAUTILUS_LOCATION_CHANGE_STANDARD: - handle_go_elsewhere (self, new_location); + { + handle_go_elsewhere (self, new_location); return; + } + case NAUTILUS_LOCATION_CHANGE_RELOAD: + { /* for reload there is no work to do */ return; + } + case NAUTILUS_LOCATION_CHANGE_BACK: + { handle_go_direction (self, new_location, FALSE); return; + } + case NAUTILUS_LOCATION_CHANGE_FORWARD: - handle_go_direction (self, new_location, TRUE); - return; - } - g_return_if_fail (FALSE); + handle_go_direction (self, new_location, TRUE); + return; + } + g_return_if_fail (FALSE); } -typedef struct { - NautilusWindowSlot *slot; - GCancellable *cancellable; - GMount *mount; +typedef struct +{ + NautilusWindowSlot *slot; + GCancellable *cancellable; + GMount *mount; } FindMountData; static void @@ -1990,44 +2227,48 @@ nautilus_window_slot_show_x_content_bar (NautilusWindowSlot *self, GMount *mount, const char * const *x_content_types) { - GtkWidget *bar; + GtkWidget *bar; - g_assert (NAUTILUS_IS_WINDOW_SLOT (self)); + g_assert (NAUTILUS_IS_WINDOW_SLOT (self)); - if (!should_handle_content_types (x_content_types)) - return; + if (!should_handle_content_types (x_content_types)) + { + return; + } - bar = nautilus_x_content_bar_new (mount, x_content_types); - gtk_widget_show (bar); - nautilus_window_slot_add_extra_location_widget (self, bar); + bar = nautilus_x_content_bar_new (mount, x_content_types); + gtk_widget_show (bar); + nautilus_window_slot_add_extra_location_widget (self, bar); } static void found_content_type_cb (const char **x_content_types, gpointer user_data) { - NautilusWindowSlot *self; - FindMountData *data = user_data; - NautilusWindowSlotPrivate *priv; + NautilusWindowSlot *self; + FindMountData *data = user_data; + NautilusWindowSlotPrivate *priv; - self = data->slot; - priv = nautilus_window_slot_get_instance_private (self); + self = data->slot; + priv = nautilus_window_slot_get_instance_private (self); - if (g_cancellable_is_cancelled (data->cancellable)) { - goto out; - } + if (g_cancellable_is_cancelled (data->cancellable)) + { + goto out; + } - if (x_content_types != NULL && x_content_types[0] != NULL) { - nautilus_window_slot_show_x_content_bar (self, data->mount, (const char* const *) x_content_types); - } + if (x_content_types != NULL && x_content_types[0] != NULL) + { + nautilus_window_slot_show_x_content_bar (self, data->mount, (const char * const *) x_content_types); + } - priv->find_mount_cancellable = NULL; + priv->find_mount_cancellable = NULL; - out: - g_object_unref (data->mount); - g_object_unref (data->cancellable); - g_free (data); +out: + g_object_unref (data->mount); + g_object_unref (data->cancellable); + g_free (data); } static void @@ -2035,158 +2276,166 @@ found_mount_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) { - FindMountData *data = user_data; - NautilusWindowSlot *self; - GMount *mount; - NautilusWindowSlotPrivate *priv; - - self = NAUTILUS_WINDOW_SLOT (data->slot); - priv = nautilus_window_slot_get_instance_private (self); - if (g_cancellable_is_cancelled (data->cancellable)) { - goto out; - } - - mount = g_file_find_enclosing_mount_finish (G_FILE (source_object), - res, - NULL); - if (mount != NULL) { - data->mount = mount; - nautilus_get_x_content_types_for_mount_async (mount, - found_content_type_cb, - data->cancellable, - data); - return; - } - - priv->find_mount_cancellable = NULL; + FindMountData *data = user_data; + NautilusWindowSlot *self; + GMount *mount; + NautilusWindowSlotPrivate *priv; + + self = NAUTILUS_WINDOW_SLOT (data->slot); + priv = nautilus_window_slot_get_instance_private (self); + if (g_cancellable_is_cancelled (data->cancellable)) + { + goto out; + } + + mount = g_file_find_enclosing_mount_finish (G_FILE (source_object), + res, + NULL); + if (mount != NULL) + { + data->mount = mount; + nautilus_get_x_content_types_for_mount_async (mount, + found_content_type_cb, + data->cancellable, + data); + return; + } + + priv->find_mount_cancellable = NULL; - out: - g_object_unref (data->cancellable); - g_free (data); +out: + g_object_unref (data->cancellable); + g_free (data); } static void nautilus_window_slot_show_trash_bar (NautilusWindowSlot *self) { - GtkWidget *bar; - NautilusView *view; + GtkWidget *bar; + NautilusView *view; - view = nautilus_window_slot_get_current_view (self); - bar = nautilus_trash_bar_new (NAUTILUS_FILES_VIEW (view)); - gtk_widget_show (bar); + view = nautilus_window_slot_get_current_view (self); + bar = nautilus_trash_bar_new (NAUTILUS_FILES_VIEW (view)); + gtk_widget_show (bar); - nautilus_window_slot_add_extra_location_widget (self, bar); + nautilus_window_slot_add_extra_location_widget (self, bar); } static void nautilus_window_slot_show_special_location_bar (NautilusWindowSlot *self, NautilusSpecialLocation special_location) { - GtkWidget *bar; + GtkWidget *bar; - bar = nautilus_special_location_bar_new (special_location); - gtk_widget_show (bar); + bar = nautilus_special_location_bar_new (special_location); + gtk_widget_show (bar); - nautilus_window_slot_add_extra_location_widget (self, bar); + nautilus_window_slot_add_extra_location_widget (self, bar); } static void slot_add_extension_extra_widgets (NautilusWindowSlot *self) { - GList *providers, *l; - GtkWidget *widget; - char *uri; - NautilusWindow *window; + GList *providers, *l; + GtkWidget *widget; + char *uri; + NautilusWindow *window; - providers = nautilus_module_get_extensions_for_type (NAUTILUS_TYPE_LOCATION_WIDGET_PROVIDER); - window = nautilus_window_slot_get_window (self); + providers = nautilus_module_get_extensions_for_type (NAUTILUS_TYPE_LOCATION_WIDGET_PROVIDER); + window = nautilus_window_slot_get_window (self); - uri = nautilus_window_slot_get_location_uri (self); - for (l = providers; l != NULL; l = l->next) { - NautilusLocationWidgetProvider *provider; + uri = nautilus_window_slot_get_location_uri (self); + for (l = providers; l != NULL; l = l->next) + { + NautilusLocationWidgetProvider *provider; - provider = NAUTILUS_LOCATION_WIDGET_PROVIDER (l->data); - widget = nautilus_location_widget_provider_get_widget (provider, uri, GTK_WIDGET (window)); - if (widget != NULL) { - nautilus_window_slot_add_extra_location_widget (self, widget); - } - } - g_free (uri); + provider = NAUTILUS_LOCATION_WIDGET_PROVIDER (l->data); + widget = nautilus_location_widget_provider_get_widget (provider, uri, GTK_WIDGET (window)); + if (widget != NULL) + { + nautilus_window_slot_add_extra_location_widget (self, widget); + } + } + g_free (uri); - nautilus_module_extension_list_free (providers); + nautilus_module_extension_list_free (providers); } static void nautilus_window_slot_update_for_new_location (NautilusWindowSlot *self) { - GFile *new_location; - NautilusFile *file; - NautilusWindowSlotPrivate *priv; + GFile *new_location; + NautilusFile *file; + NautilusWindowSlotPrivate *priv; - priv = nautilus_window_slot_get_instance_private (self); - new_location = priv->pending_location; - priv->pending_location = NULL; + priv = nautilus_window_slot_get_instance_private (self); + new_location = priv->pending_location; + priv->pending_location = NULL; - file = nautilus_file_get (new_location); - nautilus_window_slot_update_bookmark (self, file); + file = nautilus_file_get (new_location); + nautilus_window_slot_update_bookmark (self, file); - update_history (self, priv->location_change_type, new_location); + update_history (self, priv->location_change_type, new_location); - /* Create a NautilusFile for this location, so we can catch it - * if it goes away. - */ - nautilus_window_slot_set_viewed_file (self, file); - priv->viewed_file_seen = !nautilus_file_is_not_yet_confirmed (file); - priv->viewed_file_in_trash = nautilus_file_is_in_trash (file); - nautilus_file_unref (file); + /* Create a NautilusFile for this location, so we can catch it + * if it goes away. + */ + nautilus_window_slot_set_viewed_file (self, file); + priv->viewed_file_seen = !nautilus_file_is_not_yet_confirmed (file); + priv->viewed_file_in_trash = nautilus_file_is_in_trash (file); + nautilus_file_unref (file); - nautilus_window_slot_set_location (self, new_location); + nautilus_window_slot_set_location (self, new_location); - /* Sync the actions for this new location. */ - nautilus_window_slot_sync_actions (self); + /* Sync the actions for this new location. */ + nautilus_window_slot_sync_actions (self); } static void view_started_loading (NautilusWindowSlot *self, NautilusView *view) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - priv = nautilus_window_slot_get_instance_private (self); - if (view == priv->content_view) { - nautilus_window_slot_set_allow_stop (self, TRUE); - } + priv = nautilus_window_slot_get_instance_private (self); + if (view == priv->content_view) + { + nautilus_window_slot_set_allow_stop (self, TRUE); + } - gtk_widget_grab_focus (GTK_WIDGET (priv->window)); + gtk_widget_grab_focus (GTK_WIDGET (priv->window)); - gtk_widget_show (GTK_WIDGET (priv->window)); + gtk_widget_show (GTK_WIDGET (priv->window)); - nautilus_window_slot_set_loading (self, TRUE); + nautilus_window_slot_set_loading (self, TRUE); } static void view_ended_loading (NautilusWindowSlot *self, NautilusView *view) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - priv = nautilus_window_slot_get_instance_private (self); - if (view == priv->content_view) { - if (NAUTILUS_IS_FILES_VIEW (view) && priv->pending_scroll_to != NULL) { - nautilus_files_view_scroll_to_file (NAUTILUS_FILES_VIEW (priv->content_view), priv->pending_scroll_to); - } - - end_location_change (self); + priv = nautilus_window_slot_get_instance_private (self); + if (view == priv->content_view) + { + if (NAUTILUS_IS_FILES_VIEW (view) && priv->pending_scroll_to != NULL) + { + nautilus_files_view_scroll_to_file (NAUTILUS_FILES_VIEW (priv->content_view), priv->pending_scroll_to); } - if (priv->needs_reload) { - nautilus_window_slot_queue_reload (self); - priv->needs_reload = FALSE; - } + end_location_change (self); + } - nautilus_window_slot_set_allow_stop (self, FALSE); + if (priv->needs_reload) + { + nautilus_window_slot_queue_reload (self); + priv->needs_reload = FALSE; + } - nautilus_window_slot_set_loading (self, FALSE); + nautilus_window_slot_set_allow_stop (self, FALSE); + + nautilus_window_slot_set_loading (self, FALSE); } static void @@ -2194,395 +2443,422 @@ view_is_loading_changed_cb (GObject *object, GParamSpec *pspec, NautilusWindowSlot *self) { - NautilusView *view; + NautilusView *view; - view = NAUTILUS_VIEW (object); + view = NAUTILUS_VIEW (object); - nautilus_profile_start (NULL); + nautilus_profile_start (NULL); - if (nautilus_view_is_loading (view)) { - view_started_loading (self, view); - } else { - view_ended_loading (self, view); - } + if (nautilus_view_is_loading (view)) + { + view_started_loading (self, view); + } + else + { + view_ended_loading (self, view); + } - nautilus_profile_end (NULL); + nautilus_profile_end (NULL); } static void nautilus_window_slot_setup_extra_location_widgets (NautilusWindowSlot *self) { - GFile *location; - FindMountData *data; - NautilusDirectory *directory; - NautilusWindowSlotPrivate *priv; + GFile *location; + FindMountData *data; + NautilusDirectory *directory; + NautilusWindowSlotPrivate *priv; - priv = nautilus_window_slot_get_instance_private (self); - location = nautilus_window_slot_get_current_location (self); + priv = nautilus_window_slot_get_instance_private (self); + location = nautilus_window_slot_get_current_location (self); - if (location == NULL) { - return; - } + if (location == NULL) + { + return; + } - directory = nautilus_directory_get (location); + directory = nautilus_directory_get (location); - if (nautilus_directory_is_in_trash (directory)) { - nautilus_window_slot_show_trash_bar (self); - } else { - NautilusFile *file; - GFile *scripts_file; - char *scripts_path = nautilus_get_scripts_directory_path (); + if (nautilus_directory_is_in_trash (directory)) + { + nautilus_window_slot_show_trash_bar (self); + } + else + { + NautilusFile *file; + GFile *scripts_file; + char *scripts_path = nautilus_get_scripts_directory_path (); - scripts_file = g_file_new_for_path (scripts_path); - g_free (scripts_path); + scripts_file = g_file_new_for_path (scripts_path); + g_free (scripts_path); - file = nautilus_file_get (location); + file = nautilus_file_get (location); - if (nautilus_should_use_templates_directory () && - nautilus_file_is_user_special_directory (file, G_USER_DIRECTORY_TEMPLATES)) { - nautilus_window_slot_show_special_location_bar (self, NAUTILUS_SPECIAL_LOCATION_TEMPLATES); - } else if (g_file_equal (location, scripts_file)) { - nautilus_window_slot_show_special_location_bar (self, NAUTILUS_SPECIAL_LOCATION_SCRIPTS); - } + if (nautilus_should_use_templates_directory () && + nautilus_file_is_user_special_directory (file, G_USER_DIRECTORY_TEMPLATES)) + { + nautilus_window_slot_show_special_location_bar (self, NAUTILUS_SPECIAL_LOCATION_TEMPLATES); + } + else if (g_file_equal (location, scripts_file)) + { + nautilus_window_slot_show_special_location_bar (self, NAUTILUS_SPECIAL_LOCATION_SCRIPTS); + } - g_object_unref (scripts_file); - nautilus_file_unref (file); - } + g_object_unref (scripts_file); + nautilus_file_unref (file); + } - /* need the mount to determine if we should put up the x-content cluebar */ - if (priv->find_mount_cancellable != NULL) { - g_cancellable_cancel (priv->find_mount_cancellable); - priv->find_mount_cancellable = NULL; - } + /* need the mount to determine if we should put up the x-content cluebar */ + if (priv->find_mount_cancellable != NULL) + { + g_cancellable_cancel (priv->find_mount_cancellable); + priv->find_mount_cancellable = NULL; + } - data = g_new (FindMountData, 1); - data->slot = self; - data->cancellable = g_cancellable_new (); - data->mount = NULL; + data = g_new (FindMountData, 1); + data->slot = self; + data->cancellable = g_cancellable_new (); + data->mount = NULL; - priv->find_mount_cancellable = data->cancellable; - g_file_find_enclosing_mount_async (location, - G_PRIORITY_DEFAULT, - data->cancellable, - found_mount_cb, - data); + priv->find_mount_cancellable = data->cancellable; + g_file_find_enclosing_mount_async (location, + G_PRIORITY_DEFAULT, + data->cancellable, + found_mount_cb, + data); - nautilus_directory_unref (directory); + nautilus_directory_unref (directory); - slot_add_extension_extra_widgets (self); + slot_add_extension_extra_widgets (self); } static void nautilus_window_slot_connect_new_content_view (NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - priv = nautilus_window_slot_get_instance_private (self); - if (priv->new_content_view) { - g_signal_connect (priv->new_content_view, - "notify::is-loading", - G_CALLBACK (view_is_loading_changed_cb), - self); - } + priv = nautilus_window_slot_get_instance_private (self); + if (priv->new_content_view) + { + g_signal_connect (priv->new_content_view, + "notify::is-loading", + G_CALLBACK (view_is_loading_changed_cb), + self); + } } static void nautilus_window_slot_disconnect_content_view (NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - priv = nautilus_window_slot_get_instance_private (self); - if (priv->content_view) { - /* disconnect old view */ - g_signal_handlers_disconnect_by_func (priv->content_view, - G_CALLBACK (view_is_loading_changed_cb), - self); - } + priv = nautilus_window_slot_get_instance_private (self); + if (priv->content_view) + { + /* disconnect old view */ + g_signal_handlers_disconnect_by_func (priv->content_view, + G_CALLBACK (view_is_loading_changed_cb), + self); + } } static void nautilus_window_slot_switch_new_content_view (NautilusWindowSlot *self) { - GtkWidget *widget; - gboolean reusing_view; - NautilusWindowSlotPrivate *priv; - - priv = nautilus_window_slot_get_instance_private (self); - reusing_view = priv->new_content_view && - gtk_widget_get_parent (GTK_WIDGET (priv->new_content_view)) != NULL; - /* We are either reusing the view, so new_content_view and content_view - * are the same, or the new_content_view is invalid */ - if (priv->new_content_view == NULL || reusing_view) - goto done; - - if (priv->content_view != NULL) { - widget = GTK_WIDGET (priv->content_view); - gtk_widget_destroy (widget); - g_object_unref (priv->content_view); - priv->content_view = NULL; - } - - if (priv->new_content_view != NULL) { - priv->content_view = priv->new_content_view; - priv->new_content_view = NULL; - - widget = GTK_WIDGET (priv->content_view); - gtk_container_add (GTK_CONTAINER (self), widget); - gtk_widget_set_vexpand (widget, TRUE); - gtk_widget_show (widget); - - g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_ICON]); - g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_TOOLBAR_MENU_SECTIONS]); - } - -done: - /* Clean up, so we don't confuse having a new_content_view available or - * just that we didn't care about it here */ + GtkWidget *widget; + gboolean reusing_view; + NautilusWindowSlotPrivate *priv; + + priv = nautilus_window_slot_get_instance_private (self); + reusing_view = priv->new_content_view && + gtk_widget_get_parent (GTK_WIDGET (priv->new_content_view)) != NULL; + /* We are either reusing the view, so new_content_view and content_view + * are the same, or the new_content_view is invalid */ + if (priv->new_content_view == NULL || reusing_view) + { + goto done; + } + + if (priv->content_view != NULL) + { + widget = GTK_WIDGET (priv->content_view); + gtk_widget_destroy (widget); + g_object_unref (priv->content_view); + priv->content_view = NULL; + } + + if (priv->new_content_view != NULL) + { + priv->content_view = priv->new_content_view; priv->new_content_view = NULL; + widget = GTK_WIDGET (priv->content_view); + gtk_container_add (GTK_CONTAINER (self), widget); + gtk_widget_set_vexpand (widget, TRUE); + gtk_widget_show (widget); + + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_ICON]); + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_TOOLBAR_MENU_SECTIONS]); + } + +done: + /* Clean up, so we don't confuse having a new_content_view available or + * just that we didn't care about it here */ + priv->new_content_view = NULL; } /* This is called when we have decided we can actually change to the new view/location situation. */ static void change_view (NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - priv = nautilus_window_slot_get_instance_private (self); - /* Switch to the new content view. - * Destroy the extra location widgets first, since they might hold - * a pointer to the old view, which will possibly be destroyed inside - * nautilus_window_slot_switch_new_content_view(). - */ - nautilus_window_slot_remove_extra_location_widgets (self); - nautilus_window_slot_switch_new_content_view (self); + priv = nautilus_window_slot_get_instance_private (self); + /* Switch to the new content view. + * Destroy the extra location widgets first, since they might hold + * a pointer to the old view, which will possibly be destroyed inside + * nautilus_window_slot_switch_new_content_view(). + */ + nautilus_window_slot_remove_extra_location_widgets (self); + nautilus_window_slot_switch_new_content_view (self); - if (priv->pending_location != NULL) { - /* Tell the window we are finished. */ - nautilus_window_slot_update_for_new_location (self); - } + if (priv->pending_location != NULL) + { + /* Tell the window we are finished. */ + nautilus_window_slot_update_for_new_location (self); + } - /* Now that we finished switching to the new location, - * add back the extra location widgets. - */ - nautilus_window_slot_setup_extra_location_widgets (self); + /* Now that we finished switching to the new location, + * add back the extra location widgets. + */ + nautilus_window_slot_setup_extra_location_widgets (self); } static void nautilus_window_slot_dispose (GObject *object) { - NautilusWindowSlot *self; - GtkWidget *widget; - NautilusWindowSlotPrivate *priv; + NautilusWindowSlot *self; + GtkWidget *widget; + NautilusWindowSlotPrivate *priv; - self = NAUTILUS_WINDOW_SLOT (object); - priv = nautilus_window_slot_get_instance_private (self); + self = NAUTILUS_WINDOW_SLOT (object); + priv = nautilus_window_slot_get_instance_private (self); - nautilus_window_slot_clear_forward_list (self); - nautilus_window_slot_clear_back_list (self); + nautilus_window_slot_clear_forward_list (self); + nautilus_window_slot_clear_back_list (self); - nautilus_window_slot_remove_extra_location_widgets (self); + nautilus_window_slot_remove_extra_location_widgets (self); - if (priv->content_view) { - widget = GTK_WIDGET (priv->content_view); - gtk_widget_destroy (widget); - g_object_unref (priv->content_view); - priv->content_view = NULL; - } + if (priv->content_view) + { + widget = GTK_WIDGET (priv->content_view); + gtk_widget_destroy (widget); + g_object_unref (priv->content_view); + priv->content_view = NULL; + } - if (priv->new_content_view) { - widget = GTK_WIDGET (priv->new_content_view); - gtk_widget_destroy (widget); - g_object_unref (priv->new_content_view); - priv->new_content_view = NULL; - } + if (priv->new_content_view) + { + widget = GTK_WIDGET (priv->new_content_view); + gtk_widget_destroy (widget); + g_object_unref (priv->new_content_view); + priv->new_content_view = NULL; + } - nautilus_window_slot_set_viewed_file (self, NULL); + nautilus_window_slot_set_viewed_file (self, NULL); - g_clear_object (&priv->location); + g_clear_object (&priv->location); - nautilus_file_list_free (priv->pending_selection); - priv->pending_selection = NULL; + nautilus_file_list_free (priv->pending_selection); + priv->pending_selection = NULL; - g_clear_object (&priv->current_location_bookmark); - g_clear_object (&priv->last_location_bookmark); + g_clear_object (&priv->current_location_bookmark); + g_clear_object (&priv->last_location_bookmark); - if (priv->find_mount_cancellable != NULL) { - g_cancellable_cancel (priv->find_mount_cancellable); - priv->find_mount_cancellable = NULL; - } + if (priv->find_mount_cancellable != NULL) + { + g_cancellable_cancel (priv->find_mount_cancellable); + priv->find_mount_cancellable = NULL; + } - priv->window = NULL; + priv->window = NULL; - g_free (priv->title); - priv->title = NULL; + g_free (priv->title); + priv->title = NULL; - free_location_change (self); + free_location_change (self); - G_OBJECT_CLASS (nautilus_window_slot_parent_class)->dispose (object); + G_OBJECT_CLASS (nautilus_window_slot_parent_class)->dispose (object); } static void nautilus_window_slot_grab_focus (GtkWidget *widget) { - NautilusWindowSlot *self; - NautilusWindowSlotPrivate *priv; + NautilusWindowSlot *self; + NautilusWindowSlotPrivate *priv; - self = NAUTILUS_WINDOW_SLOT (widget); - priv = nautilus_window_slot_get_instance_private (self); + self = NAUTILUS_WINDOW_SLOT (widget); + priv = nautilus_window_slot_get_instance_private (self); - GTK_WIDGET_CLASS (nautilus_window_slot_parent_class)->grab_focus (widget); + GTK_WIDGET_CLASS (nautilus_window_slot_parent_class)->grab_focus (widget); - if (nautilus_window_slot_get_search_visible (self)) { - gtk_widget_grab_focus (GTK_WIDGET (priv->query_editor)); - } else if (priv->content_view) { - gtk_widget_grab_focus (GTK_WIDGET (priv->content_view)); - } else if (priv->new_content_view) { - gtk_widget_grab_focus (GTK_WIDGET (priv->new_content_view)); - } + if (nautilus_window_slot_get_search_visible (self)) + { + gtk_widget_grab_focus (GTK_WIDGET (priv->query_editor)); + } + else if (priv->content_view) + { + gtk_widget_grab_focus (GTK_WIDGET (priv->content_view)); + } + else if (priv->new_content_view) + { + gtk_widget_grab_focus (GTK_WIDGET (priv->new_content_view)); + } } static void nautilus_window_slot_class_init (NautilusWindowSlotClass *klass) { - GObjectClass *oclass = G_OBJECT_CLASS (klass); - GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); - - klass->active = real_active; - klass->inactive = real_inactive; - klass->get_view_for_location = real_get_view_for_location; - klass->handles_location = real_handles_location; - - oclass->dispose = nautilus_window_slot_dispose; - oclass->constructed = nautilus_window_slot_constructed; - oclass->set_property = nautilus_window_slot_set_property; - oclass->get_property = nautilus_window_slot_get_property; - - widget_class->grab_focus = nautilus_window_slot_grab_focus; - - signals[ACTIVE] = - g_signal_new ("active", - G_TYPE_FROM_CLASS (klass), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (NautilusWindowSlotClass, active), - NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); - - signals[INACTIVE] = - g_signal_new ("inactive", - G_TYPE_FROM_CLASS (klass), - G_SIGNAL_RUN_LAST, - G_STRUCT_OFFSET (NautilusWindowSlotClass, inactive), - NULL, NULL, - g_cclosure_marshal_VOID__VOID, - G_TYPE_NONE, 0); - - properties[PROP_ACTIVE] = - g_param_spec_boolean ("active", - "Whether the slot is active", - "Whether the slot is the active slot of the window", - FALSE, - G_PARAM_READWRITE); - properties[PROP_LOADING] = - g_param_spec_boolean ("loading", - "Whether the slot loading", - "Whether the slot is loading a new location", - FALSE, - G_PARAM_READABLE); - - properties[PROP_WINDOW] = - g_param_spec_object ("window", - "The NautilusWindow", - "The NautilusWindow this slot is part of", - NAUTILUS_TYPE_WINDOW, - G_PARAM_READWRITE | G_PARAM_CONSTRUCT); - - properties[PROP_ICON] = - g_param_spec_object ("icon", - "Icon that represents the slot", - "The icon that represents the slot", - G_TYPE_ICON, - G_PARAM_READABLE); - - properties[PROP_TOOLBAR_MENU_SECTIONS] = - g_param_spec_pointer ("toolbar-menu-sections", - "Menu sections for the toolbar menu", - "The menu sections to add to the toolbar menu for this slot", - G_PARAM_READABLE); - - properties[PROP_LOCATION] = - g_param_spec_object ("location", - "Current location visible on the slot", - "Either the location that is used currently, or the pending location. Clients will see the same value they set, and therefore it will be cosistent from clients point of view.", - G_TYPE_FILE, - G_PARAM_READWRITE); - - g_object_class_install_properties (oclass, NUM_PROPERTIES, properties); + GObjectClass *oclass = G_OBJECT_CLASS (klass); + GtkWidgetClass *widget_class = GTK_WIDGET_CLASS (klass); + + klass->active = real_active; + klass->inactive = real_inactive; + klass->get_view_for_location = real_get_view_for_location; + klass->handles_location = real_handles_location; + + oclass->dispose = nautilus_window_slot_dispose; + oclass->constructed = nautilus_window_slot_constructed; + oclass->set_property = nautilus_window_slot_set_property; + oclass->get_property = nautilus_window_slot_get_property; + + widget_class->grab_focus = nautilus_window_slot_grab_focus; + + signals[ACTIVE] = + g_signal_new ("active", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (NautilusWindowSlotClass, active), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + signals[INACTIVE] = + g_signal_new ("inactive", + G_TYPE_FROM_CLASS (klass), + G_SIGNAL_RUN_LAST, + G_STRUCT_OFFSET (NautilusWindowSlotClass, inactive), + NULL, NULL, + g_cclosure_marshal_VOID__VOID, + G_TYPE_NONE, 0); + + properties[PROP_ACTIVE] = + g_param_spec_boolean ("active", + "Whether the slot is active", + "Whether the slot is the active slot of the window", + FALSE, + G_PARAM_READWRITE); + properties[PROP_LOADING] = + g_param_spec_boolean ("loading", + "Whether the slot loading", + "Whether the slot is loading a new location", + FALSE, + G_PARAM_READABLE); + + properties[PROP_WINDOW] = + g_param_spec_object ("window", + "The NautilusWindow", + "The NautilusWindow this slot is part of", + NAUTILUS_TYPE_WINDOW, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT); + + properties[PROP_ICON] = + g_param_spec_object ("icon", + "Icon that represents the slot", + "The icon that represents the slot", + G_TYPE_ICON, + G_PARAM_READABLE); + + properties[PROP_TOOLBAR_MENU_SECTIONS] = + g_param_spec_pointer ("toolbar-menu-sections", + "Menu sections for the toolbar menu", + "The menu sections to add to the toolbar menu for this slot", + G_PARAM_READABLE); + + properties[PROP_LOCATION] = + g_param_spec_object ("location", + "Current location visible on the slot", + "Either the location that is used currently, or the pending location. Clients will see the same value they set, and therefore it will be cosistent from clients point of view.", + G_TYPE_FILE, + G_PARAM_READWRITE); + + g_object_class_install_properties (oclass, NUM_PROPERTIES, properties); } GFile * nautilus_window_slot_get_location (NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - g_assert (self != NULL); + g_assert (self != NULL); - priv = nautilus_window_slot_get_instance_private (self); + priv = nautilus_window_slot_get_instance_private (self); - return priv->location; + return priv->location; } const gchar * nautilus_window_slot_get_title (NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - priv = nautilus_window_slot_get_instance_private (self); + priv = nautilus_window_slot_get_instance_private (self); - return priv->title; + return priv->title; } char * nautilus_window_slot_get_location_uri (NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - g_assert (NAUTILUS_IS_WINDOW_SLOT (self)); + g_assert (NAUTILUS_IS_WINDOW_SLOT (self)); - priv = nautilus_window_slot_get_instance_private (self); - if (priv->location) { - return g_file_get_uri (priv->location); - } - return NULL; + priv = nautilus_window_slot_get_instance_private (self); + if (priv->location) + { + return g_file_get_uri (priv->location); + } + return NULL; } NautilusWindow * nautilus_window_slot_get_window (NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - g_assert (NAUTILUS_IS_WINDOW_SLOT (self)); + g_assert (NAUTILUS_IS_WINDOW_SLOT (self)); - priv = nautilus_window_slot_get_instance_private (self); + priv = nautilus_window_slot_get_instance_private (self); - return priv->window; + return priv->window; } void nautilus_window_slot_set_window (NautilusWindowSlot *self, NautilusWindow *window) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - g_assert (NAUTILUS_IS_WINDOW_SLOT (self)); - g_assert (NAUTILUS_IS_WINDOW (window)); + g_assert (NAUTILUS_IS_WINDOW_SLOT (self)); + g_assert (NAUTILUS_IS_WINDOW (window)); - priv = nautilus_window_slot_get_instance_private (self); - if (priv->window != window) { - priv->window = window; - g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_WINDOW]); - } + priv = nautilus_window_slot_get_instance_private (self); + if (priv->window != window) + { + priv->window = window; + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_WINDOW]); + } } /* nautilus_window_slot_update_title: @@ -2595,240 +2871,254 @@ nautilus_window_slot_set_window (NautilusWindowSlot *self, void nautilus_window_slot_update_title (NautilusWindowSlot *self) { - NautilusWindow *window; - char *title; - gboolean do_sync = FALSE; - NautilusWindowSlotPrivate *priv; + NautilusWindow *window; + char *title; + gboolean do_sync = FALSE; + NautilusWindowSlotPrivate *priv; - priv = nautilus_window_slot_get_instance_private (self); - title = nautilus_compute_title_for_location (priv->location); - window = nautilus_window_slot_get_window (self); + priv = nautilus_window_slot_get_instance_private (self); + title = nautilus_compute_title_for_location (priv->location); + window = nautilus_window_slot_get_window (self); - if (g_strcmp0 (title, priv->title) != 0) { - do_sync = TRUE; + if (g_strcmp0 (title, priv->title) != 0) + { + do_sync = TRUE; - g_free (priv->title); - priv->title = title; - title = NULL; - } + g_free (priv->title); + priv->title = title; + title = NULL; + } - if (strlen (priv->title) > 0) { - do_sync = TRUE; - } + if (strlen (priv->title) > 0) + { + do_sync = TRUE; + } - if (do_sync) { - nautilus_window_sync_title (window, self); - } + if (do_sync) + { + nautilus_window_sync_title (window, self); + } - if (title != NULL) { - g_free (title); - } + if (title != NULL) + { + g_free (title); + } } gboolean nautilus_window_slot_get_allow_stop (NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - priv = nautilus_window_slot_get_instance_private (self); + priv = nautilus_window_slot_get_instance_private (self); - return priv->allow_stop; + return priv->allow_stop; } void nautilus_window_slot_set_allow_stop (NautilusWindowSlot *self, gboolean allow) { - NautilusWindow *window; - NautilusWindowSlotPrivate *priv; + NautilusWindow *window; + NautilusWindowSlotPrivate *priv; - g_assert (NAUTILUS_IS_WINDOW_SLOT (self)); + g_assert (NAUTILUS_IS_WINDOW_SLOT (self)); - priv = nautilus_window_slot_get_instance_private (self); + priv = nautilus_window_slot_get_instance_private (self); - priv->allow_stop = allow; + priv->allow_stop = allow; - window = nautilus_window_slot_get_window (self); - nautilus_window_sync_allow_stop (window, self); + window = nautilus_window_slot_get_window (self); + nautilus_window_sync_allow_stop (window, self); } void nautilus_window_slot_stop_loading (NautilusWindowSlot *self) { - GList *selection; - GFile *location; - NautilusDirectory *directory; - NautilusWindowSlotPrivate *priv; - - priv = nautilus_window_slot_get_instance_private (self); - location = nautilus_window_slot_get_location (self); - directory = nautilus_directory_get (priv->location); - - if (NAUTILUS_IS_FILES_VIEW (priv->content_view)) { - nautilus_files_view_stop_loading (NAUTILUS_FILES_VIEW (priv->content_view)); - } - - nautilus_directory_unref (directory); - - if (priv->pending_location != NULL && - location != NULL && - priv->content_view != NULL && - NAUTILUS_IS_FILES_VIEW (priv->content_view)) { - /* 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 (priv->content_view); - load_new_location (self, - location, - selection, - TRUE, - FALSE); - nautilus_file_list_free (selection); - } - - end_location_change (self); - - if (priv->new_content_view) { - g_object_unref (priv->new_content_view); - priv->new_content_view = NULL; - } + GList *selection; + GFile *location; + NautilusDirectory *directory; + NautilusWindowSlotPrivate *priv; + + priv = nautilus_window_slot_get_instance_private (self); + location = nautilus_window_slot_get_location (self); + directory = nautilus_directory_get (priv->location); + + if (NAUTILUS_IS_FILES_VIEW (priv->content_view)) + { + nautilus_files_view_stop_loading (NAUTILUS_FILES_VIEW (priv->content_view)); + } + + nautilus_directory_unref (directory); + + if (priv->pending_location != NULL && + location != NULL && + priv->content_view != NULL && + NAUTILUS_IS_FILES_VIEW (priv->content_view)) + { + /* 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 (priv->content_view); + load_new_location (self, + location, + selection, + TRUE, + FALSE); + nautilus_file_list_free (selection); + } + + end_location_change (self); + + if (priv->new_content_view) + { + g_object_unref (priv->new_content_view); + priv->new_content_view = NULL; + } } -NautilusView* +NautilusView * nautilus_window_slot_get_current_view (NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - priv = nautilus_window_slot_get_instance_private (self); - if (priv->content_view != NULL) { - return priv->content_view; - } else if (priv->new_content_view) { - return priv->new_content_view; - } + priv = nautilus_window_slot_get_instance_private (self); + if (priv->content_view != NULL) + { + return priv->content_view; + } + else if (priv->new_content_view) + { + return priv->new_content_view; + } - return NULL; + return NULL; } NautilusBookmark * nautilus_window_slot_get_bookmark (NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - priv = nautilus_window_slot_get_instance_private (self); + priv = nautilus_window_slot_get_instance_private (self); - return priv->current_location_bookmark; + return priv->current_location_bookmark; } GList * nautilus_window_slot_get_back_history (NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - priv = nautilus_window_slot_get_instance_private (self); + priv = nautilus_window_slot_get_instance_private (self); - return priv->back_list; + return priv->back_list; } GList * nautilus_window_slot_get_forward_history (NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - priv = nautilus_window_slot_get_instance_private (self); + priv = nautilus_window_slot_get_instance_private (self); - return priv->forward_list; + return priv->forward_list; } NautilusWindowSlot * nautilus_window_slot_new (NautilusWindow *window) { - return g_object_new (NAUTILUS_TYPE_WINDOW_SLOT, - "window", window, - NULL); + return g_object_new (NAUTILUS_TYPE_WINDOW_SLOT, + "window", window, + NULL); } -GIcon* +GIcon * nautilus_window_slot_get_icon (NautilusWindowSlot *self) { - NautilusView *view; + NautilusView *view; - g_return_val_if_fail (NAUTILUS_IS_WINDOW_SLOT (self), NULL); + g_return_val_if_fail (NAUTILUS_IS_WINDOW_SLOT (self), NULL); - view = nautilus_window_slot_get_current_view (self); + view = nautilus_window_slot_get_current_view (self); - return view ? nautilus_view_get_icon (view) : NULL; + return view ? nautilus_view_get_icon (view) : NULL; } NautilusToolbarMenuSections * nautilus_window_slot_get_toolbar_menu_sections (NautilusWindowSlot *self) { - NautilusView *view; + NautilusView *view; - g_return_val_if_fail (NAUTILUS_IS_WINDOW_SLOT (self), NULL); + g_return_val_if_fail (NAUTILUS_IS_WINDOW_SLOT (self), NULL); - view = nautilus_window_slot_get_current_view (self); + view = nautilus_window_slot_get_current_view (self); - return view ? nautilus_view_get_toolbar_menu_sections (view) : NULL; + return view ? nautilus_view_get_toolbar_menu_sections (view) : NULL; } gboolean nautilus_window_slot_get_active (NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - g_return_val_if_fail (NAUTILUS_IS_WINDOW_SLOT (self), FALSE); + g_return_val_if_fail (NAUTILUS_IS_WINDOW_SLOT (self), FALSE); - priv = nautilus_window_slot_get_instance_private (self); + priv = nautilus_window_slot_get_instance_private (self); - return priv->active; + return priv->active; } void nautilus_window_slot_set_active (NautilusWindowSlot *self, gboolean active) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - g_return_if_fail (NAUTILUS_IS_WINDOW_SLOT (self)); + g_return_if_fail (NAUTILUS_IS_WINDOW_SLOT (self)); - priv = nautilus_window_slot_get_instance_private (self); - if (priv->active != active) { - priv->active = active; - - if (active) { - g_signal_emit (self, signals[ACTIVE], 0); - } else { - g_signal_emit (self, signals[INACTIVE], 0); - } + priv = nautilus_window_slot_get_instance_private (self); + if (priv->active != active) + { + priv->active = active; - g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_ACTIVE]); + if (active) + { + g_signal_emit (self, signals[ACTIVE], 0); } + else + { + g_signal_emit (self, signals[INACTIVE], 0); + } + + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_ACTIVE]); + } } static void nautilus_window_slot_set_loading (NautilusWindowSlot *self, gboolean loading) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - g_return_if_fail (NAUTILUS_IS_WINDOW_SLOT (self)); + g_return_if_fail (NAUTILUS_IS_WINDOW_SLOT (self)); - priv = nautilus_window_slot_get_instance_private (self); - priv->loading = loading; + priv = nautilus_window_slot_get_instance_private (self); + priv->loading = loading; - g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_LOADING]); + g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_LOADING]); } gboolean nautilus_window_slot_get_loading (NautilusWindowSlot *self) { - NautilusWindowSlotPrivate *priv; + NautilusWindowSlotPrivate *priv; - g_return_val_if_fail (NAUTILUS_IS_WINDOW_SLOT (self), FALSE); + g_return_val_if_fail (NAUTILUS_IS_WINDOW_SLOT (self), FALSE); - priv = nautilus_window_slot_get_instance_private (self); + priv = nautilus_window_slot_get_instance_private (self); - return priv->loading; + return priv->loading; } |