OK, so since Fl_Tabs currently has no defined when() behavior, it seems we can define the behavior of the non-default values how we want, as long as the "default behavior" remains unchanged.
Having looked exhaustively at similar widgets (Fl_Radio_Button & Fl_Browser) to divine the when() flags intention I'd like to implement the following behavior which I think makes sense, to me at least: when() Flags | Mouse Behavior | Keyboard Behavior --------------|-------------------------------------------------|-------------------------------------- NEVER | change: no callback | change: no callback | no change: no callback | no change: N/A --------------|-------------------------------------------------|-------------------------------------- CHANGED | change: callback on PUSH, changed()=true | change: callback on PUSH, changed()=true | no change: no callback | no change: N/A --------------|-------------------------------------------------|-------------------------------------- NOT_CHANGED | change: no callback | change: no callback | no change: callback on PUSH, changed()=false | no change: N/A --------------|-------------------------------------------------|-------------------------------------- CHANGED + | change: callback on PUSH, changed()=true | change: callback on PUSH, changed()=true NOT_CHANGED | no change: callback on PUSH, changed()=false | no change: N/A --------------|-------------------------------------------------|-------------------------------------- RELEASE | change: callback on RELEASE, changed()=true | change: callback on RELEASE, changed()=true | no change: no callback | no change: N/A --------------|-------------------------------------------------|-------------------------------------- RELEASE + | change: callback on RELEASE, changed()=true | change: callback on RELEASE, changed()=true CHANGED | no change: no callback | no change: N/A --------------|-------------------------------------------------|-------------------------------------- RELEASE + | change: no callback | change: no callback NOT_CHANGED | no change: callback on RELEASE, changed()=false | no change: N/A --------------|-------------------------------------------------|-------------------------------------- RELEASE + | change: callback on RELEASE, changed()=true | change: callback on RELEASE, changed()=true CHANGED + | no change: callback on RELEASE, changed()=false | no change: N/A NOT_CHANGED | | ----------------------------------------------------------------+-------------------------------------- Notes on the above: N/A: "Not Applicable".. there is no way to keyboard navigate the tabs without making a change. RELEASE: this has (and will continue to be) the default when() value of Fl_Tabs. This default behavior will remain the same. The above departs from the current behavior of Fl_Browser and Fl_Radio_Button in that the keyboard behavior for PUSH vs. RELEASE follows the same logic as the mouse. (In the other widgets, keyboard callbacks are always on RELEASE) You can compare the above to the current radio + browser behavior: http://seriss.com/people/erco/fltk/when-behavior-03-26-2013.html Looking for comments on the above suggestion for tab behavior, and possible problems if any adding this might cause. (I can think of none, other than apps that change when() for Fl_Tabs that would suddenly inherit the new behavior; to date, Fl_Tabs has totally ignored the value of when()) _______________________________________________ fltk-dev mailing list fltk-dev@easysw.com http://lists.easysw.com/mailman/listinfo/fltk-dev