--- gtk+-2.6.2/gtk/gtktreeview.c.orig	2005-03-28 11:30:56.000000000 -0500
+++ gtk+-2.6.2/gtk/gtktreeview.c	2005-03-28 11:31:09.000000000 -0500
@@ -2368,20 +2368,7 @@
           if (focus_cell)
             gtk_tree_view_column_focus_cell (column, focus_cell);
 
-          if (event->state & GDK_CONTROL_MASK)
-            {
-              gtk_tree_view_real_set_cursor (tree_view, path, FALSE, TRUE);
-              gtk_tree_view_real_toggle_cursor_row (tree_view);
-            }
-          else if (event->state & GDK_SHIFT_MASK)
-            {
-              gtk_tree_view_real_set_cursor (tree_view, path, FALSE, TRUE);
-              gtk_tree_view_real_select_cursor_row (tree_view, FALSE);
-            }
-          else
-            {
-              gtk_tree_view_real_set_cursor (tree_view, path, TRUE, TRUE);
-            }
+          gtk_tree_view_real_set_cursor (tree_view, path, TRUE, TRUE);
 
           tree_view->priv->ctrl_pressed = FALSE;
           tree_view->priv->shift_pressed = FALSE;
@@ -8365,7 +8352,7 @@
       if (tree_view->priv->selection->type == GTK_SELECTION_MULTIPLE)
 	gtk_tree_view_real_set_cursor (tree_view, cursor_path, FALSE, FALSE);
       else
-	gtk_tree_view_real_set_cursor (tree_view, cursor_path, TRUE, FALSE);
+	gtk_tree_view_real_set_cursor (tree_view, cursor_path, !tree_view->priv->ctrl_pressed, FALSE);
     }
   gtk_tree_view_queue_draw_path (tree_view, cursor_path, NULL);
   gtk_tree_path_free (cursor_path);
@@ -8445,7 +8432,7 @@
   if (new_cursor_node)
     {
       cursor_path = _gtk_tree_view_find_path (tree_view, new_cursor_tree, new_cursor_node);
-      gtk_tree_view_real_set_cursor (tree_view, cursor_path, TRUE, TRUE);
+      gtk_tree_view_real_set_cursor (tree_view, cursor_path, !tree_view->priv->ctrl_pressed, TRUE);
       gtk_tree_path_free (cursor_path);
     }
   else
@@ -8500,7 +8487,7 @@
   _gtk_rbtree_find_offset (tree_view->priv->tree, y, &cursor_tree, &cursor_node);
   cursor_path = _gtk_tree_view_find_path (tree_view, cursor_tree, cursor_node);
   g_return_if_fail (cursor_path != NULL);
-  gtk_tree_view_real_set_cursor (tree_view, cursor_path, TRUE, TRUE);
+  gtk_tree_view_real_set_cursor (tree_view, cursor_path, !tree_view->priv->ctrl_pressed, TRUE);
   gtk_tree_view_clamp_node_visible (tree_view, cursor_tree, cursor_node);
   gtk_tree_path_free (cursor_path);
 }
@@ -8624,7 +8611,7 @@
     }
 
   path = _gtk_tree_view_find_path (tree_view, cursor_tree, cursor_node);
-  gtk_tree_view_real_set_cursor (tree_view, path, TRUE, TRUE);
+  gtk_tree_view_real_set_cursor (tree_view, path, !tree_view->priv->ctrl_pressed, TRUE);
   gtk_tree_path_free (path);
 }
 
@@ -11070,7 +11057,7 @@
       GtkRBTree *new_tree = NULL;
       GtkRBNode *new_node = NULL;
 
-      if (clear_and_select && !tree_view->priv->ctrl_pressed)
+      if (clear_and_select)
         {
           GtkTreeSelectMode mode = 0;
 
@@ -11207,7 +11194,7 @@
       tree_view->priv->edited_column->editable_widget)
     gtk_tree_view_stop_editing (tree_view, TRUE);
 
-  gtk_tree_view_real_set_cursor (tree_view, path, TRUE, TRUE);
+  gtk_tree_view_real_set_cursor (tree_view, path, !tree_view->priv->ctrl_pressed, TRUE);
 
   if (focus_column && focus_column->visible)
     {
