--- src/file-manager/fm-list-view.c	2005-06-02 09:16:55.000000000 -0700
+++ src/file-manager/fm-list-view_new.c	2005-06-07 16:46:59.000000000 -0700
@@ -535,20 +535,26 @@
 	
 			/* We're going to filter out some situations where
 			 * we can't let the default code run because all
-			 * but one row would be would be deselected. We don't
-			 * want that; we want the right click menu or single
-			 * click to apply to everything that's currently selected. */
+			 * but one row would be deselected. We don't want
+			 * that; we want the right click menu or single click
+			 * to apply to everything that's currently selected. */
 			
 			if (event->button == 3 && gtk_tree_selection_path_is_selected (selection, path)) {
 				call_parent = FALSE;
 			} 
 			
+			/* If CTRL + single click */
 			if ((event->button == 1 || event->button == 2) &&
 			    ((event->state & GDK_CONTROL_MASK) != 0 ||
 			     (event->state & GDK_SHIFT_MASK) == 0)) {
 				view->details->row_selected_on_button_down = gtk_tree_selection_path_is_selected (selection, path);
+				
+				/* If the row is already-selected, then deselect */
 				if (view->details->row_selected_on_button_down) {
 					call_parent = FALSE;
+					gtk_tree_selection_unselect_path (selection, path);
+					
+				/* If the row is unselected, then select now */
 				} else if  ((event->state & GDK_CONTROL_MASK) != 0) {
 					call_parent = FALSE;
 					gtk_tree_selection_select_path (selection, path);
