diff -Npur gtk-old/gtk/gtktreeview.c gtk-new/gtk/gtktreeview.c
--- gtk-old/gtk/gtktreeview.c	2010-05-20 03:32:05.000000000 +0800
+++ gtk-new/gtk/gtktreeview.c	2010-05-20 03:33:55.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))
 	{
@@ -3025,6 +3024,7 @@ gtk_tree_view_button_release (GtkWidget
 					     tree_view->priv->button_pressed_tree,
 					     tree_view->priv->button_pressed_node, TRUE);
 	  gtk_tree_path_free (path);
+	  gtk_grab_remove (widget);
 	}
 
       tree_view->priv->button_pressed_tree = NULL;
文件 gtk-old/gtk/.gtktreeview.c.swp 和 gtk-new/gtk/.gtktreeview.c.swp 不同
