summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Soriano <csoriano@gnome.org>2016-04-26 17:10:14 +0200
committerCarlos Soriano <csoriano@gnome.org>2016-04-26 17:10:55 +0200
commitec1e56330176b1874181c34074b325acd4980d3e (patch)
tree1c1169d2081c6c2f026f1f5eb72781b89016bdbc
parent4df06e7f14ffefedc65bae84fca1cd7f5e945f78 (diff)
downloadnautilus-wip/csoriano/reveal-renamed-file.tar.gz
files-view: reveal file after renamingwip/csoriano/reveal-renamed-file
-rw-r--r--src/nautilus-canvas-container.c6
-rw-r--r--src/nautilus-canvas-view.c1
-rw-r--r--src/nautilus-files-view.c45
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