diff -Npur gtk2-old/gtk/gtktreeview.c gtk2-new/gtk/gtktreeview.c
--- gtk2-old/gtk/gtktreeview.c	2010-05-27 21:55:36.000000000 +0800
+++ gtk2-new/gtk/gtktreeview.c	2010-05-27 21:56:51.000000000 +0800
@@ -3005,7 +3005,6 @@ gtk_tree_view_button_release (GtkWidget
 
   if (event->button == 1)
     {
-      gtk_grab_remove (widget);
       if (tree_view->priv->button_pressed_node == tree_view->priv->prelight_node &&
           GTK_TREE_VIEW_FLAG_SET (tree_view, GTK_TREE_VIEW_ARROW_PRELIT))
 	{
@@ -3027,6 +3026,7 @@ gtk_tree_view_button_release (GtkWidget
 	  gtk_tree_path_free (path);
 	}
 
+      gtk_grab_remove (widget);
       tree_view->priv->button_pressed_tree = NULL;
       tree_view->priv->button_pressed_node = NULL;
     }
