Blob Blame History Raw
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))