--- orig/src/file-manager/fm-list-view.c	2010-09-27 15:47:25.000000000 +0200
+++ nautilus-2.32.0/src/file-manager/fm-list-view.c	2010-10-18 10:29:59.068147002 +0200
@@ -74,7 +74,6 @@ struct FMListViewDetails {
 	GtkCellRendererPixbuf *pixbuf_cell;
 	GtkCellRendererText   *file_name_cell;
 	GList *cells;
-	GtkCellEditable *editable_widget;
 
 	NautilusZoomLevel zoom_level;
 
@@ -1166,37 +1165,9 @@ sort_column_changed_callback (GtkTreeSor
 }
 
 static void
-cell_renderer_editing_started_cb (GtkCellRenderer *renderer,
-				  GtkCellEditable *editable,
-				  const gchar *path_str,
-				  FMListView *list_view)
-{
-	GtkEntry *entry;
-	gint start_offset, end_offset;
-
-	entry = GTK_ENTRY (editable);
-	list_view->details->editable_widget = editable;
-
-	/* Free a previously allocated original_name */
-	g_free (list_view->details->original_name);
-
-	list_view->details->original_name = g_strdup (gtk_entry_get_text (entry));
-	eel_filename_get_rename_region (list_view->details->original_name,
-					&start_offset, &end_offset);
-	gtk_editable_select_region (GTK_EDITABLE (entry), start_offset, end_offset);
-
-	nautilus_clipboard_set_up_editable
-		(GTK_EDITABLE (entry),
-		 fm_directory_view_get_ui_manager (FM_DIRECTORY_VIEW (list_view)),
-		 FALSE);
-}
-
-static void
 cell_renderer_editing_canceled (GtkCellRendererText *cell,
 				FMListView          *view)
 {
-	view->details->editable_widget = NULL;
-
 	fm_directory_view_unfreeze_updates (FM_DIRECTORY_VIEW (view));
 }
 
@@ -1210,8 +1181,6 @@ cell_renderer_edited (GtkCellRendererTex
 	NautilusFile *file;
 	GtkTreeIter iter;
 
-	view->details->editable_widget = NULL;
-
 	/* Don't allow a rename with an empty string. Revert to original 
 	 * without notifying the user.
 	 */
@@ -1614,8 +1583,6 @@ create_and_set_up_tree_view (FMListView
 			view->details->file_name_cell = (GtkCellRendererText *)cell;
 			g_signal_connect (cell, "edited", G_CALLBACK (cell_renderer_edited), view);
 			g_signal_connect (cell, "editing-canceled", G_CALLBACK (cell_renderer_editing_canceled), view);
-			g_signal_connect (cell, "editing-started", G_CALLBACK (cell_renderer_editing_started_cb), view);
-
 			gtk_tree_view_column_pack_start (view->details->file_name_column, cell, TRUE);
 			gtk_tree_view_column_set_cell_data_func (view->details->file_name_column, cell,
 								 (GtkTreeCellDataFunc) filename_cell_data_func,
@@ -1857,9 +1824,9 @@ stop_cell_editing (FMListView *list_view
 	 * the edited handler from being called on the cleared list model.
 	 */
 	column = list_view->details->file_name_column;
-	if (column != NULL && list_view->details->editable_widget != NULL &&
-		GTK_IS_CELL_EDITABLE (list_view->details->editable_widget)) {
-		gtk_cell_editable_editing_done (list_view->details->editable_widget);
+        if (column != NULL && column->editable_widget != NULL &&
+		GTK_IS_CELL_EDITABLE (column->editable_widget)) {
+		gtk_cell_editable_editing_done (column->editable_widget);
 	}
 }
 
@@ -2644,13 +2611,15 @@ fm_list_view_start_renaming_file (FMDire
 	FMListView *list_view;
 	GtkTreeIter iter;
 	GtkTreePath *path;
+        GtkEntry *entry;
+	int start_offset, end_offset;
 	
 	list_view = FM_LIST_VIEW (view);
 	
 	/* Select all if we are in renaming mode already */
-	if (list_view->details->file_name_column && list_view->details->editable_widget) {
+        if (list_view->details->file_name_column && list_view->details->file_name_column->editable_widget) {
 		gtk_editable_select_region (
-				GTK_EDITABLE (list_view->details->editable_widget),
+				GTK_EDITABLE (list_view->details->file_name_column->editable_widget),
 				0,
 				-1);
 		return;
@@ -2679,7 +2648,27 @@ fm_list_view_start_renaming_file (FMDire
 				  list_view->details->file_name_column,
 				  TRUE);
 
+        entry = GTK_ENTRY (list_view->details->file_name_column->editable_widget);
+
+	/* Free a previously allocated original_name */
+	g_free (list_view->details->original_name);
+
+	list_view->details->original_name = g_strdup (gtk_entry_get_text (entry));
+	if (select_all) {
+		start_offset = 0;
+		end_offset = -1;
+	} else {
+		eel_filename_get_rename_region (list_view->details->original_name,
+						&start_offset, &end_offset);
+	}
+	gtk_editable_select_region (GTK_EDITABLE (entry), start_offset, end_offset);
+
 	gtk_tree_path_free (path);
+
+        nautilus_clipboard_set_up_editable
+		(GTK_EDITABLE (entry),
+		 fm_directory_view_get_ui_manager (view),
+		 FALSE);
 }
 
 static void
