diff options
author | Carlos Soriano <csoriano@gnome.org> | 2016-04-26 17:10:14 +0200 |
---|---|---|
committer | Carlos Soriano <csoriano@gnome.org> | 2016-04-26 17:10:55 +0200 |
commit | ec1e56330176b1874181c34074b325acd4980d3e (patch) | |
tree | 1c1169d2081c6c2f026f1f5eb72781b89016bdbc | |
parent | 4df06e7f14ffefedc65bae84fca1cd7f5e945f78 (diff) | |
download | nautilus-wip/csoriano/reveal-renamed-file.tar.gz |
files-view: reveal file after renamingwip/csoriano/reveal-renamed-file
-rw-r--r-- | src/nautilus-canvas-container.c | 6 | ||||
-rw-r--r-- | src/nautilus-canvas-view.c | 1 | ||||
-rw-r--r-- | src/nautilus-files-view.c | 45 |
3 files changed, 48 insertions, 4 deletions
diff --git a/src/nautilus-canvas-container.c b/src/nautilus-canvas-container.c index e7c1eea84..8a9c9f341 100644 --- a/src/nautilus-canvas-container.c +++ b/src/nautilus-canvas-container.c @@ -691,11 +691,14 @@ reveal_icon (NautilusCanvasContainer *container, GtkAdjustment *hadj, *vadj; EelIRect bounds; + g_print ("REVEAL ICON\n"); if (!icon_is_positioned (icon)) { + g_print ("icon not positioned\n"); set_pending_icon_to_reveal (container, icon); return; } + g_print ("icon positioned\n"); set_pending_icon_to_reveal (container, NULL); gtk_widget_get_allocation (GTK_WIDGET (container), &allocation); @@ -709,6 +712,7 @@ reveal_icon (NautilusCanvasContainer *container, } else { item_get_canvas_bounds (EEL_CANVAS_ITEM (icon->item), &bounds); } + g_print ("bounds %d %d\n", bounds.y0, bounds.x0); if (bounds.y0 < gtk_adjustment_get_value (vadj)) { gtk_adjustment_set_value (vadj, bounds.y0); } else if (bounds.y1 > gtk_adjustment_get_value (vadj) + allocation.height) { @@ -6557,10 +6561,12 @@ nautilus_canvas_container_set_selection (NautilusCanvasContainer *container, hash = g_hash_table_new (NULL, NULL); for (p = selection; p != NULL; p = p->next) { g_hash_table_insert (hash, p->data, p->data); + g_print ("BEFORE se;ection %s\n", nautilus_file_get_uri (NAUTILUS_FILE (p->data))); } for (p = container->details->icons; p != NULL; p = p->next) { icon = p->data; + g_print ("after se;ection %s %d\n", nautilus_file_get_uri (NAUTILUS_FILE (icon->data)), g_hash_table_lookup (hash, icon->data) != NULL); res = icon_set_selected (container, icon, g_hash_table_lookup (hash, icon->data) != NULL); diff --git a/src/nautilus-canvas-view.c b/src/nautilus-canvas-view.c index dcd491414..933a9b0a5 100644 --- a/src/nautilus-canvas-view.c +++ b/src/nautilus-canvas-view.c @@ -1148,6 +1148,7 @@ nautilus_canvas_view_reveal_selection (NautilusFilesView *view) /* Make sure at least one of the selected items is scrolled into view */ if (selection != NULL) { + nautilus_canvas_container_layout_now (get_canvas_container (NAUTILUS_CANVAS_VIEW (view))); nautilus_canvas_container_reveal (get_canvas_container (NAUTILUS_CANVAS_VIEW (view)), selection->data); diff --git a/src/nautilus-files-view.c b/src/nautilus-files-view.c index 7435c0c85..ca5629d10 100644 --- a/src/nautilus-files-view.c +++ b/src/nautilus-files-view.c @@ -603,6 +603,8 @@ nautilus_files_view_reveal_selection (NautilusFilesView *view) { g_return_if_fail (NAUTILUS_IS_FILES_VIEW (view)); + g_print ("##### reveals selection\n"); + G_BREAKPOINT (); NAUTILUS_FILES_VIEW_CLASS (G_OBJECT_GET_CLASS (view))->reveal_selection (view); } @@ -1877,18 +1879,51 @@ create_folder_on_name_accepted (gpointer user_data) } static void +rename_file_on_rename_done (NautilusFile *file, + GFile *result_location, + GError *error, + gpointer callback_data) +{ + FileNameWidgetData *data = (FileNameWidgetData *) callback_data; + + g_print ("rename file done %p %s\n", data->view, nautilus_file_get_uri (data->target_file)); + if (data->view && data->target_file) { + nautilus_files_view_select_file (data->view, data->target_file); + nautilus_files_view_reveal_selection (data->view); + } + + if (data->view) { + g_object_remove_weak_pointer (G_OBJECT (data->view), + (gpointer) &data->view); + } + + if (data->target_file) { + g_object_remove_weak_pointer (G_OBJECT (data->target_file), + (gpointer) &data->target_file); + } + + g_free (data); +} + +static void rename_file_on_name_accepted (gpointer user_data) { FileNameWidgetData *data; + FileNameWidgetData *rename_done_data; gchar *name; data = (FileNameWidgetData *) user_data; + rename_done_data = g_new (FileNameWidgetData, 1); + rename_done_data->view = data->view; + g_object_add_weak_pointer (G_OBJECT (rename_done_data->view), + (gpointer) &rename_done_data->view); + rename_done_data->target_file = data->target_file; + g_object_add_weak_pointer (G_OBJECT (rename_done_data->target_file), + (gpointer) &rename_done_data->target_file); name = g_strstrip (g_strdup (gtk_entry_get_text (GTK_ENTRY (data->name_entry)))); - nautilus_rename_file (data->target_file, name, NULL, NULL); - - nautilus_files_view_select_file (data->view, data->target_file); - nautilus_files_view_reveal_selection (data->view); + nautilus_rename_file (data->target_file, name, + rename_file_on_rename_done, rename_done_data); gtk_widget_hide (data->widget); @@ -3553,6 +3588,8 @@ on_end_file_changes (NautilusFilesView *view) nautilus_files_view_check_empty_states (view); /* If the view is empty, zoom slider and sort menu are insensitive */ nautilus_files_view_update_toolbar_menus (view); + nautilus_files_view_reveal_selection(view); + g_print ("end file changes\n"); } static void |