--- fm-list-view.c	2005-04-11 01:05:58.000000000 -0700
+++ fm-list-view_new.c	2005-06-08 01:32:22.000000000 -0700
@@ -473,24 +473,10 @@
 		 tree_view,
 		 event->x, event->y);
 	
-	g_object_get (G_OBJECT (gtk_widget_get_settings (widget)), 
-		      "gtk-double-click-time", &double_click_time,
-		      NULL);
-
-	/* Determine click count */
-	current_time = eel_get_system_time ();
-	if (current_time - last_click_time < double_click_time * 1000) {
-		click_count++;
-	} else {
-		click_count = 0;
-	}
-
-	/* Stash time for next compare */
-	last_click_time = current_time;
-
 	/* Ignore double click if we are in single click mode */
-	if (click_policy_auto_value == NAUTILUS_CLICK_POLICY_SINGLE && click_count >= 2) {
-		return TRUE;
+	if (click_policy_auto_value == NAUTILUS_CLICK_POLICY_SINGLE && 
+		event->type == GDK_2BUTTON_PRESS) {
+			return TRUE;
 	}
 
 	
@@ -544,12 +530,15 @@
 			} 
 			
 			if ((event->button == 1 || event->button == 2) &&
-			    ((event->state & GDK_CONTROL_MASK) != 0 ||
-			     (event->state & GDK_SHIFT_MASK) == 0)) {
+			    ((event->state & GDK_CONTROL_MASK) ||
+			     !(event->state & GDK_SHIFT_MASK))) {
 				view->details->row_selected_on_button_down = gtk_tree_selection_path_is_selected (selection, path);
 				if (view->details->row_selected_on_button_down) {
 					call_parent = FALSE;
-				} else if  ((event->state & GDK_CONTROL_MASK) != 0) {
+					if (event->state & GDK_CONTROL_MASK) {
+						gtk_tree_selection_unselect_path (selection, path);
+					}
+				} else if (event->state & GDK_CONTROL_MASK) {
 					call_parent = FALSE;
 					gtk_tree_selection_select_path (selection, path);
 				}
