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

Reply via email to