From e874b086acaaebc1521a8f2a1043fcd3d3b79ffd Mon Sep 17 00:00:00 2001 From: Greg Ercolano Date: Mon, 10 May 2010 20:23:42 +0000 Subject: [PATCH] 1) Invoke callback if when(FL_WHEN_RELEASE) 2) Removed unintended fallthrough from FL_DRAG -> FL_RELEASE handler. 3) Removed redundant redraw() calls git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@7599 ea41ed52-d2ee-0310-a9c1-e6b18d33e121 --- src/Fl_Tree.cxx | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/Fl_Tree.cxx b/src/Fl_Tree.cxx index 4c3a99b14..3578778ca 100644 --- a/src/Fl_Tree.cxx +++ b/src/Fl_Tree.cxx @@ -304,12 +304,12 @@ int Fl_Tree::handle(int e) { changed = 1; // changed o->select_toggle(); // toggle selection lastselect = o; // save we toggled it (prevents oscillation) - redraw(); // make change(s) visible } } else { - changed = 1; // changed - o->select(); // select this - redraw(); // make change(s) visible + if ( ! o->is_selected() ) { + changed = 1; // changed + o->select(); // select this + } } break; } @@ -323,11 +323,17 @@ int Fl_Tree::handle(int e) { } } } + break; } case FL_RELEASE: { if ( Fl::event_button() == FL_LEFT_MOUSE ) { ret |= 1; } + if ( when() & FL_WHEN_RELEASE || + ( changed && when() & FL_WHEN_CHANGED) ) { + set_changed(); + do_callback((Fl_Widget*)this, user_data()); // item callback + } break; } }