1) Modified tree test program to include when() options,
2) Improved when() handling for left mouse behavior 3) Added docs for when() handling git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@7601 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
parent
c4fd0d2900
commit
1f6d222cb8
@ -63,6 +63,11 @@
|
||||
/// The tree items may also contain other FLTK widgets, like buttons, input fields,
|
||||
/// or even "custom" widgets.
|
||||
///
|
||||
/// The callback() is invoked depending on the value of when():
|
||||
///
|
||||
/// - FL_WHEN_RELEASE -- callback invoked when left mouse button is released on an item
|
||||
/// - FL_WHEN_CHANGED -- callback invoked when left mouse changes selection state
|
||||
///
|
||||
/// The simple way to define a tree:
|
||||
/// \code
|
||||
/// #include <FL/Fl_Tree.H>
|
||||
@ -101,6 +106,8 @@
|
||||
///
|
||||
/// \image html tree-elements.png
|
||||
///
|
||||
/// \todo Needs handling of callbacks when items are procedurally select()ed
|
||||
///
|
||||
|
||||
class Fl_Tree : public Fl_Group {
|
||||
Fl_Tree_Item *_root; // can be null!
|
||||
|
@ -279,6 +279,7 @@ int Fl_Tree::handle(int e) {
|
||||
break;
|
||||
}
|
||||
case FL_DRAG: {
|
||||
if ( Fl::event_button() != FL_LEFT_MOUSE ) break;
|
||||
Fl_Tree_Item *o = _root->find_clicked(_prefs);
|
||||
if ( o ) {
|
||||
ret |= 1; // handled
|
||||
@ -328,11 +329,9 @@ int Fl_Tree::handle(int e) {
|
||||
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
|
||||
if ( when() & FL_WHEN_RELEASE || ( this->changed() && (when() & FL_WHEN_CHANGED)) ) {
|
||||
do_callback((Fl_Widget*)this, user_data()); // item callback
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -458,6 +458,7 @@ static void cb_whenmode_chooser(Fl_Choice*, void*) {
|
||||
switch ( whenmode_chooser->value() ) {
|
||||
case 0: tree->when(FL_WHEN_RELEASE); break;
|
||||
case 1: tree->when(FL_WHEN_CHANGED); break;
|
||||
case 2: tree->when(FL_WHEN_NEVER); break;
|
||||
default: tree->when(FL_WHEN_RELEASE); break;
|
||||
};
|
||||
}
|
||||
@ -465,6 +466,7 @@ static void cb_whenmode_chooser(Fl_Choice*, void*) {
|
||||
Fl_Menu_Item menu_whenmode_chooser[] = {
|
||||
{"Release", 0, 0, 0, 0, FL_NORMAL_LABEL, 0, 11, 0},
|
||||
{"Changed", 0, 0, 0, 0, FL_NORMAL_LABEL, 0, 11, 0},
|
||||
{"Never", 0, 0, 0, 0, FL_NORMAL_LABEL, 0, 11, 0},
|
||||
{0,0,0,0,0,0,0,0,0}
|
||||
};
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user