Index: file-manager/fm-list-view.c
===================================================================
--- file-manager/fm-list-view.c	(Revision 13137)
+++ file-manager/fm-list-view.c	(Arbeitskopie)
@@ -290,6 +290,7 @@ fm_list_view_did_not_drag (FMListView *v
 		}
 
 		if ((click_policy_auto_value == NAUTILUS_CLICK_POLICY_SINGLE)
+		    && !gtk_tree_view_is_rubber_banding_active (tree_view)
 		    && !button_event_modifies_selection(event)) {
 			if (event->button == 1) {
 				activate_selected_items (view);
@@ -500,7 +501,8 @@ motion_notify_callback (GtkWidget *widge
 								  n_drag_types);
 		}
 
-		if (gtk_drag_check_threshold (widget,
+		if (view->details->row_selected_on_button_down &&
+		    gtk_drag_check_threshold (widget,
 					      view->details->drag_x,
 					      view->details->drag_y,
 					      event->x, 
@@ -511,8 +513,8 @@ motion_notify_callback (GtkWidget *widge
 				 GDK_ACTION_MOVE | GDK_ACTION_COPY | GDK_ACTION_LINK | GDK_ACTION_ASK,
 				 view->details->drag_button,
 				 (GdkEvent*)event);
+			return TRUE;
 		}		      
-		return TRUE;
 	}
 	
 	return FALSE;
@@ -580,7 +582,6 @@ button_press_callback (GtkWidget *widget
 	GtkTreeView *tree_view;
 	GtkTreePath *path;
 	gboolean call_parent;
-	gboolean allow_drag;
 	GtkTreeSelection *selection;
 	GtkWidgetClass *tree_view_class;
 	gint64 current_time;
@@ -627,7 +628,6 @@ button_press_callback (GtkWidget *widget
 	view->details->ignore_button_release = FALSE;
 
 	call_parent = TRUE;
-	allow_drag = FALSE;
 	if (gtk_tree_view_get_path_at_pos (tree_view, event->x, event->y,
 					   &path, NULL, NULL, NULL)) {
 		/* Keep track of path of last click so double clicks only happen
@@ -687,14 +687,10 @@ button_press_callback (GtkWidget *widget
 
 				
 				view->details->row_selected_on_button_down = gtk_tree_selection_path_is_selected (selection, path);
+
+				view->details->ignore_button_release = on_expander;
 				if (view->details->row_selected_on_button_down) {
 					call_parent = on_expander;
-					view->details->ignore_button_release = call_parent;
-				} else if  ((event->state & GDK_CONTROL_MASK) != 0) {
-					call_parent = FALSE;
-					gtk_tree_selection_select_path (selection, path);
-				} else {
-					view->details->ignore_button_release = on_expander;
 				}
 			}
 		
@@ -1263,6 +1259,7 @@ create_and_set_up_tree_view (FMListView 
 							(GDestroyNotify)g_free,
 							(GDestroyNotify) g_object_unref);
 	gtk_tree_view_set_enable_search (view->details->tree_view, TRUE);
+	gtk_tree_view_set_rubber_banding (view->details->tree_view, TRUE);
 
 	/* Don't handle backspace key. It's used to open the parent folder. */
 	binding_set = gtk_binding_set_by_class (GTK_WIDGET_GET_CLASS (view->details->tree_view));
