[nautilus/wip/csoriano/reveal-renamed-file] files-view: reveal file after renaming



commit ec1e56330176b1874181c34074b325acd4980d3e
Author: Carlos Soriano <csoriano gnome org>
Date:   Tue Apr 26 17:10:14 2016 +0200

    files-view: reveal file after renaming

 src/nautilus-canvas-container.c |    6 +++++
 src/nautilus-canvas-view.c      |    1 +
 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 e7c1eea..8a9c9f3 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 dcd4914..933a9b0 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 7435c0c..ca5629d 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


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]