--- src/exo/exo-tree-view.c.ORIG +++ src/exo/exo-tree-view.c @@ -364,20 +364,11 @@ tree_view->priv->button_release_activates = (tree_view->priv->single_click && event->type == GDK_BUTTON_PRESS && event->button == 1 && (event->state & gtk_accelerator_get_default_mod_mask ()) == 0); } - - /* unfortunately GtkTreeView will unselect rows except the clicked one, - * which makes dragging from a GtkTreeView problematic. That's why we - * remember the selected paths here and restore them later. - */ + if (event->type == GDK_BUTTON_PRESS && (event->state & gtk_accelerator_get_default_mod_mask ()) == 0 && path != NULL && gtk_tree_selection_path_is_selected (selection, path)) { - /* if no custom select function is set, we simply use exo_noop_false here, - * to tell the tree view that it may not alter the selection. - */ - if (G_LIKELY (selection->user_func == NULL)) - gtk_tree_selection_set_select_function (selection, (GtkTreeSelectionFunc) exo_noop_false, NULL, NULL); - else + selected_paths = gtk_tree_selection_get_selected_rows (selection, NULL); }