Author: greg.ercolano
Date: 2010-05-10 15:51:01 -0700 (Mon, 10 May 2010)
New Revision: 7601
Log:
1) Modified tree test program to include when() options,
2) Improved when() handling for left mouse behavior
3) Added docs for when() handling
Modified:
branches/branch-1.3/FL/Fl_Tree.H
branches/branch-1.3/src/Fl_Tree.cxx
branches/branch-1.3/test/tree.cxx
Modified: branches/branch-1.3/FL/Fl_Tree.H
===================================================================
--- branches/branch-1.3/FL/Fl_Tree.H 2010-05-10 21:07:05 UTC (rev 7600)
+++ branches/branch-1.3/FL/Fl_Tree.H 2010-05-10 22:51:01 UTC (rev 7601)
@@ -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!
Modified: branches/branch-1.3/src/Fl_Tree.cxx
===================================================================
--- branches/branch-1.3/src/Fl_Tree.cxx 2010-05-10 21:07:05 UTC (rev 7600)
+++ branches/branch-1.3/src/Fl_Tree.cxx 2010-05-10 22:51:01 UTC (rev 7601)
@@ -279,6 +279,7 @@
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,12 +329,10 @@
case FL_RELEASE: {
if ( Fl::event_button() == FL_LEFT_MOUSE ) {
ret |= 1;
+ if ( when() & FL_WHEN_RELEASE || ( this->changed() && (when() &
FL_WHEN_CHANGED)) ) {
+ do_callback((Fl_Widget*)this, user_data()); // item callback
+ }
}
- if ( when() & FL_WHEN_RELEASE ||
- ( changed && when() & FL_WHEN_CHANGED) ) {
- set_changed();
- do_callback((Fl_Widget*)this, user_data()); // item callback
- }
break;
}
}
Modified: branches/branch-1.3/test/tree.cxx
===================================================================
--- branches/branch-1.3/test/tree.cxx 2010-05-10 21:07:05 UTC (rev 7600)
+++ branches/branch-1.3/test/tree.cxx 2010-05-10 22:51:01 UTC (rev 7601)
@@ -458,6 +458,7 @@
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 @@
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}
};
_______________________________________________
fltk-commit mailing list
[email protected]
http://lists.easysw.com/mailman/listinfo/fltk-commit