summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorGreg Ercolano <erco@seriss.com>2010-05-10 20:23:42 +0000
committerGreg Ercolano <erco@seriss.com>2010-05-10 20:23:42 +0000
commite874b086acaaebc1521a8f2a1043fcd3d3b79ffd (patch)
treecf32c194fdaa1997c07d39ec93a5b09fdeaa91c4 /src
parent3ef47f712a82fb995d0811e003ad5ce5239baab7 (diff)
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
Diffstat (limited to 'src')
-rw-r--r--src/Fl_Tree.cxx14
1 files 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;
}
}