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

Reply via email to