Bad fix for http://bugzilla.xfce.org/show_bug.cgi?id=6230 This makes sure exo_noop_false is unset after parent's button handler has been called. The bug is still there in the "restore previous selection" code. diff -Nur exo-0.3.106/exo/exo-tree-view.c exo-0.3.106.new/exo/exo-tree-view.c --- exo-0.3.106/exo/exo-tree-view.c 2009-12-12 13:19:12.000000000 +0100 +++ exo-0.3.106.new/exo/exo-tree-view.c 2010-04-16 23:43:51.212286473 +0200 @@ -373,6 +373,15 @@ /* call the parent's button press handler */ result = (*GTK_WIDGET_CLASS (exo_tree_view_parent_class)->button_press_event) (widget, event); + /* ugly fix for http://bugzilla.xfce.org/show_bug.cgi?id=6230 */ + if (G_LIKELY (selection->user_func == (GtkTreeSelectionFunc) exo_noop_false)) + { + /* just reset the select function (previously set to exo_noop_false), + * there's no clean way to do this, so what the heck. + */ + selection->user_func = NULL; + } + /* restore previous selection if the path is still selected */ 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))