summaryrefslogtreecommitdiff
path: root/FL/Fl_Tree.H
diff options
context:
space:
mode:
authorGreg Ercolano <erco@seriss.com>2018-08-06 18:04:46 +0000
committerGreg Ercolano <erco@seriss.com>2018-08-06 18:04:46 +0000
commit205570d1340e6109ef721053cebfb7f9acb0255a (patch)
tree2a384971d687814f00aa087ca22520a126f9f1ee /FL/Fl_Tree.H
parent339ba4c8b307f025c5ef8999f8539656057d69b7 (diff)
Fl_Tree documentation fixes for html/pdf, doxygen 1.8.5
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.4@13008 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'FL/Fl_Tree.H')
-rw-r--r--FL/Fl_Tree.H507
1 files changed, 233 insertions, 274 deletions
diff --git a/FL/Fl_Tree.H b/FL/Fl_Tree.H
index 119662887..63c06240a 100644
--- a/FL/Fl_Tree.H
+++ b/FL/Fl_Tree.H
@@ -36,280 +36,239 @@
/// \brief This file contains the definitions of the Fl_Tree class
///
-/// \class Fl_Tree
-///
-/// \brief Tree widget.
-///
-/// \image html tree-simple.png "Fl_Tree example program"
-/// \image latex tree-simple.png "Fl_Tree example program" width=4cm
-///
-/// \code
-/// Fl_Tree // Top level widget
-/// |--- Fl_Tree_Item // Items in the tree
-/// |--- Fl_Tree_Prefs // Preferences for the tree
-/// |--- Fl_Tree_Connector (enum) // Connection modes
-/// |--- Fl_Tree_Select (enum) // Selection modes
-/// |--- Fl_Tree_Sort (enum) // Sort behavior
-/// \endcode
-/// Similar to Fl_Browser, Fl_Tree is a browser of Fl_Tree_Item's arranged
-/// in a parented hierarchy, or 'tree'. Subtrees can be expanded or closed.
-/// Items can be added, deleted, inserted, sorted and re-ordered.
-///
-/// 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>
-/// [..]
-/// Fl_Tree tree(X,Y,W,H);
-/// tree.begin();
-/// tree.add("Flintstones/Fred");
-/// tree.add("Flintstones/Wilma");
-/// tree.add("Flintstones/Pebbles");
-/// tree.add("Simpsons/Homer");
-/// tree.add("Simpsons/Marge");
-/// tree.add("Simpsons/Bart");
-/// tree.add("Simpsons/Lisa");
-/// tree.end();
-/// \endcode
-///
-/// \par FEATURES
-/// Items can be added with add(),<BR>
-/// removed with remove(),<BR>
-/// completely cleared with clear(),<BR>
-/// inserted with insert() and insert_above(),<BR>
-/// selected/deselected with select() and deselect(),<BR>
-/// open/closed with open() and close(),<BR>
-/// positioned on the screen with show_item_top(), show_item_middle() and
-/// show_item_bottom(),<BR>
-/// item children can be swapped around with Fl_Tree_Item::swap_children(),<BR>
-/// items can be moved around with Fl_Tree_Item::move(),<BR>
-/// an item's children can be walked with Fl_Tree_Item::first() and Fl_Tree_Item::next(),
-/// an item's children can be indexed directly with Fl_Tree_Item::child()
-/// and Fl_Tree_Item::children(),<BR>
-/// items can be moved from one subtree to another with Fl_Tree_Item::deparent()
-/// and Fl_Tree_Item::reparent(),<BR>
-/// sorting can be controlled when items are add()ed via sortorder().<BR>
-/// You can walk the entire tree with first() and next().<BR>
-/// You can walk visible items with first_visible_item()
-/// and next_visible_item().<BR>
-/// You can walk selected items with first_selected_item() and
-/// next_selected_item().<BR>
-/// Items can be found by their pathname using find_item(const char*),
-/// and an item's pathname can be found with item_pathname().<BR>
-/// The selected items' colors are controlled by selection_color()
-/// (inherited from Fl_Widget).<BR>
-/// A hook is provided to allow you to redefine how item's labels are drawn
-/// via Fl_Tree::item_draw_callback().<BR>
-///
-/// \par SELECTION OF ITEMS
-/// The tree can have different selection behaviors controlled by selectmode().
-/// The background color used for selected items is the Fl_Tree::selection_color().
-/// The foreground color for selected items is controlled internally with fl_contrast().
-///
-/// \par CHILD WIDGETS
-/// FLTK widgets (including custom widgets) can be assigned to tree items via
-/// Fl_Tree_Item::widget().
-/// \par
-/// When an Fl_Tree_Item::widget() is defined, the default behavior is for the
-/// widget() to be shown in place of the item's label (if it has one).
-/// Only the widget()'s width will be used; the widget()'s x() and y() position
-/// will be managed by the tree, and the h() will track the item's height.
-/// This default behavior can be altered (ABI 1.3.1):
-/// Setting Fl_Tree::item_draw_mode()'s FL_TREE_ITEM_DRAW_LABEL_AND_WIDGET flag
-/// causes the label + widget to be displayed together in that order, and
-/// adding the FL_TREE_ITEM_HEIGHT_FROM_WIDGET flag causes widget's height
-/// to define the widget()'s height.
-///
-/// \par ICONS
-/// The tree's open/close icons can be redefined with
-/// Fl_Tree::openicon(), Fl_Tree::closeicon(). User icons
-/// can either be changed globally with Fl_Tree::usericon(),
-/// or on a per-item basis with Fl_Tree_Item::usericon().
-/// \par
-/// Various default preferences can be globally manipulated via Fl_Tree_Prefs,
-/// including colors, margins, icons, connection lines, etc.
-///
-/// \par FONTS AND COLORS
-/// When adding new items to the tree, the new items get the
-/// defaults for fonts and colors from:
-/// \par
-/// - Fl_Tree::item_labelfont() -- The default item label font (default: FL_HELVETICA)
-/// - Fl_Tree::item_labelsize() -- The default item label size (default: FL_NORMAL_SIZE)
-/// - Fl_Tree::item_labelfgcolor() -- The default item label foreground color (default: FL_FOREGROUND_COLOR)
-/// - Fl_Tree::item_labelbgcolor() -- The default item label background color (default: 0xffffffff, which tree uses as 'transparent')
-/// \par
-/// Each item (Fl_Tree_Item) inherits a copy of these font/color attributes when created,
-/// and each item has its own methods to let the app change these values on a per-item basis
-/// using methods of the same name:
-/// \par
-/// - Fl_Tree_Item::labelfont() -- The item's label font (default: FL_HELVETICA)
-/// - Fl_Tree_Item::labelsize() -- The item's label size (default: FL_NORMAL_SIZE)
-/// - Fl_Tree_Item::labelfgcolor() -- The item's label foreground color (default: FL_FOREGROUND_COLOR)
-/// - Fl_Tree_Item::labelbgcolor() -- The item's label background color (default: 0xffffffff, which uses the tree's own bg color)
-///
-/// \par CALLBACKS
-/// The tree's callback() will be invoked when items change state or are open/closed.
-/// when() controls when mouse/keyboard events invoke the callback.
-/// callback_item() and callback_reason() can be used to determine the cause of the callback. e.g.
-/// \par
-/// \code
-/// void MyTreeCallback(Fl_Widget *w, void *data) {
-/// Fl_Tree *tree = (Fl_Tree*)w;
-/// Fl_Tree_Item *item = (Fl_Tree_Item*)tree->callback_item(); // get selected item
-/// switch ( tree->callback_reason() ) {
-/// case FL_TREE_REASON_SELECTED: [..]
-/// case FL_TREE_REASON_DESELECTED: [..]
-/// case FL_TREE_REASON_RESELECTED: [..]
-/// case FL_TREE_REASON_OPENED: [..]
-/// case FL_TREE_REASON_CLOSED: [..]
-/// }
-/// \endcode
-///
-/// \par SIMPLE EXAMPLES
-/// To find all the selected items:
-/// \code
-/// for ( Fl_Tree_Item *i=first_selected_item(); i; i=next_selected_item(i) )
-/// printf("Item %s is selected\n", i->label());
-/// \endcode
-/// To get an item's full menu pathname, use Fl_Tree::item_pathname(), e.g.
-/// \code
-/// char pathname[256] = "???";
-/// tree->item_pathname(pathname, sizeof(pathname), item); // eg. "Parent/Child/Item"
-/// \endcode
-/// \par
-/// To walk all the items of the tree from top to bottom:
-/// \code
-/// // Walk all the items in the tree, and print their labels
-/// for ( Fl_Tree_Item *item = tree->first(); item; item = tree->next(item) ) {
-/// printf("Item: %s\n", item->label());
-/// }
-/// \endcode
-/// \par
-/// To recursively walk all the children of a particular item,
-/// define a function that uses recursion:
-/// \code
-/// // Find all of the item's children and print an indented report of their labels
-/// void my_print_all_children(Fl_Tree_Item *item, int indent=0) {
-/// for ( int t=0; t<item->children(); t++ ) {
-/// printf("%*s Item: %s\n", indent, "", item->child(t)->label());
-/// my_print_all_children(item->child(t), indent+4); // recurse
-/// }
-/// }
-/// \endcode
-/// \par
-/// To change the default label font and color when creating new items:
-/// \code
-/// tree = new Fl_Tree(..);
-/// tree->item_labelfont(FL_COURIER); // Use Courier font for all new items
-/// tree->item_labelfgcolor(FL_RED); // Use red color for labels of all new items
-/// [..]
-/// // Now create the items in the tree using the above defaults.
-/// tree->add("Aaa");
-/// tree->add("Bbb");
-/// [..]
-/// \endcode
-/// \par
-/// To change the font and color of all existing items in the tree:
-/// \code
-/// // Change the font and color of all items currently in the tree
-/// for ( Fl_Tree_Item *item = tree->first(); item; item = tree->next(item) ) {
-/// item->labelfont(FL_COURIER);
-/// item->labelcolor(FL_RED);
-/// }
-/// \endcode
-///
-/// \par DISPLAY DESCRIPTION
-/// The following image shows the tree's various visual elements
-/// and the methods that control them:
-/// \par
-/// \image html tree-elements.png
-/// \image latex tree-elements.png "Fl_Tree elements" width=6cm
-/// \par
-/// The following shows the protected dimension variables 'tree inner' (tix..)
-/// and 'tree outer' (tox..):
-/// \image html tree-dimensions.png "Fl_Tree inner/outer dimensions" width=6cm
-/// \image latex tree-dimensions.png "Fl_Tree inner/outer dimensions" width=6cm
-///
-/// \par KEYBOARD BINDINGS
-/// The following table lists keyboard bindings for navigating the tree:
-///
-/// <TABLE BORDER="1" SUMMARY="Fl_Tree keyboard bindings.">
-/// <CAPTION ALIGN=TOP>Fl_Tree keyboard bindings.</CAPTION>
-/// <TR>
-/// <TD WIDTH=25% ALIGN=CENTER><B>Keyboard</B></TD>
-/// <TD WIDTH=25% ALIGN=CENTER><B>FL_TREE_SELECT_MULTI</B></TD>
-/// <TD WIDTH=25% ALIGN=CENTER><B>FL_TREE_SELECT_SINGLE</B></TD>
-/// <TD WIDTH=25% ALIGN=CENTER><B>FL_TREE_SELECT_NONE</B></TD>
-///
-/// </TR><TR>
-/// <TD ALIGN=CENTER><B>Ctrl-A</B> (Linux/Windows)<BR><B>Command-A</B> (Mac)</TD>
-/// <TD ALIGN=CENTER>Select all items.</TD>
-/// <TD ALIGN=CENTER>N/A</TD>
-/// <TD ALIGN=CENTER>N/A</TD>
-///
-/// </TR><TR>
-/// <TD ALIGN=CENTER><B>Space </B></TD>
-/// <TD ALIGN=CENTER>Selects item.</TD>
-/// <TD ALIGN=CENTER>Selects item.</TD>
-/// <TD ALIGN=CENTER>N/A</TD>
-///
-/// </TR><TR>
-/// <TD ALIGN=CENTER><B>Ctrl-Space </B></TD>
-/// <TD ALIGN=CENTER>Toggle item.</TD>
-/// <TD ALIGN=CENTER>Toggle item.</TD>
-/// <TD ALIGN=CENTER>N/A</TD>
-///
-/// </TR><TR>
-/// <TD ALIGN=CENTER><B>Shift-Space </B></TD>
-/// <TD ALIGN=CENTER>Extends selection<BR>from last item.</TD>
-/// <TD ALIGN=CENTER>Selects item.</TD>
-/// <TD ALIGN=CENTER>N/A</TD>
-///
-/// </TR><TR>
-/// <TD ALIGN=CENTER><B>Enter,<BR>Ctrl-Enter,<BR>Shift-Enter </B></TD>
-/// <TD ALIGN=CENTER>Toggles open/close</TD>
-/// <TD ALIGN=CENTER>Toggles open/close</TD>
-/// <TD ALIGN=CENTER>Toggles open/close</TD>
-///
-/// </TR><TR>
-/// <TD ALIGN=CENTER><B>Right / Left</B></TD>
-/// <TD ALIGN=CENTER>Open/Close item.</TD>
-/// <TD ALIGN=CENTER>Open/Close item.</TD>
-/// <TD ALIGN=CENTER>Open/Close item.</TD>
-///
-/// </TR><TR>
-/// <TD ALIGN=CENTER><B>Up / Down</B></TD>
-/// <TD ALIGN=CENTER>Move focus box up/down.</TD>
-/// <TD ALIGN=CENTER>Move focus box up/down.</TD>
-/// <TD ALIGN=CENTER>N/A</TD>
-///
-/// </TR><TR>
-/// <TD ALIGN=CENTER><B>Shift-Up / Shift-Down</B></TD>
-/// <TD ALIGN=CENTER>Extend selection up/down.</TD>
-/// <TD ALIGN=CENTER>Move focus up/down.</TD>
-/// <TD ALIGN=CENTER>N/A</TD>
-///
-/// </TR><TR>
-/// <TD ALIGN=CENTER><B>Home / End</B></TD>
-/// <TD ALIGN=CENTER>Move to top/bottom of tree.</TD>
-/// <TD ALIGN=CENTER>Move to top/bottom of tree.</TD>
-/// <TD ALIGN=CENTER>Move to top/bottom of tree.</TD>
-///
-/// </TR><TR>
-/// <TD ALIGN=CENTER><B>PageUp / PageDown</B></TD>
-/// <TD ALIGN=CENTER>Page up/down.</TD>
-/// <TD ALIGN=CENTER>Page up/down.</TD>
-/// <TD ALIGN=CENTER>Page up/down.</TD>
-///
-/// </TD></TR></TABLE>
-///
+/** \class Fl_Tree
+
+ \brief Tree widget.
+
+ \image html tree-simple.png "Fl_Tree example program"
+ \image latex tree-simple.png "Fl_Tree example program" width=4cm
+
+ \code
+ Fl_Tree // Top level widget
+ |--- Fl_Tree_Item // Items in the tree
+ |--- Fl_Tree_Prefs // Preferences for the tree
+ |--- Fl_Tree_Connector (enum) // Connection modes
+ |--- Fl_Tree_Select (enum) // Selection modes
+ |--- Fl_Tree_Sort (enum) // Sort behavior
+ \endcode
+
+ Similar to Fl_Browser, Fl_Tree is a browser of Fl_Tree_Item's arranged
+ in a parented hierarchy, or 'tree'. Subtrees can be expanded or closed.
+ Items can be added, deleted, inserted, sorted and re-ordered.
+
+ 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:
+ \par
+ \code
+ #include <FL/Fl_Tree.H>
+ [..]
+ Fl_Tree tree(X,Y,W,H);
+ tree.begin();
+ tree.add("Flintstones/Fred");
+ tree.add("Flintstones/Wilma");
+ tree.add("Flintstones/Pebbles");
+ tree.add("Simpsons/Homer");
+ tree.add("Simpsons/Marge");
+ tree.add("Simpsons/Bart");
+ tree.add("Simpsons/Lisa");
+ tree.end();
+ \endcode
+
+ \par FEATURES
+ Items can be added with add(),<BR>
+ removed with remove(),<BR>
+ completely cleared with clear(),<BR>
+ inserted with insert() and insert_above(),<BR>
+ selected/deselected with select() and deselect(),<BR>
+ open/closed with open() and close(),<BR>
+ positioned on the screen with show_item_top(), show_item_middle() and
+ show_item_bottom(),<BR>
+ item children can be swapped around with Fl_Tree_Item::swap_children(),<BR>
+ items can be moved around with Fl_Tree_Item::move(),<BR>
+ an item's children can be walked with Fl_Tree_Item::first() and Fl_Tree_Item::next(),
+ an item's children can be indexed directly with Fl_Tree_Item::child()
+ and Fl_Tree_Item::children(),<BR>
+ items can be moved from one subtree to another with Fl_Tree_Item::deparent()
+ and Fl_Tree_Item::reparent(),<BR>
+ sorting can be controlled when items are add()ed via sortorder().<BR>
+ You can walk the entire tree with first() and next().<BR>
+ You can walk visible items with first_visible_item()
+ and next_visible_item().<BR>
+ You can walk selected items with first_selected_item() and
+ next_selected_item().<BR>
+ Items can be found by their pathname using find_item(const char*),
+ and an item's pathname can be found with item_pathname().<BR>
+ The selected items' colors are controlled by selection_color()
+ (inherited from Fl_Widget).<BR>
+ A hook is provided to allow you to redefine how item's labels are drawn
+ via Fl_Tree::item_draw_callback().<BR>
+
+ \par SELECTION OF ITEMS
+ The tree can have different selection behaviors controlled by selectmode().
+ The background color used for selected items is the Fl_Tree::selection_color().
+ The foreground color for selected items is controlled internally with fl_contrast().
+
+ \par CHILD WIDGETS
+ FLTK widgets (including custom widgets) can be assigned to tree items via
+ Fl_Tree_Item::widget().
+ \par
+ When an Fl_Tree_Item::widget() is defined, the default behavior is for the
+ widget() to be shown in place of the item's label (if it has one).
+ Only the widget()'s width will be used; the widget()'s x() and y() position
+ will be managed by the tree, and the h() will track the item's height.
+ This default behavior can be altered (ABI 1.3.1):
+ Setting Fl_Tree::item_draw_mode()'s FL_TREE_ITEM_DRAW_LABEL_AND_WIDGET flag
+ causes the label + widget to be displayed together in that order, and
+ adding the FL_TREE_ITEM_HEIGHT_FROM_WIDGET flag causes widget's height
+ to define the widget()'s height.
+
+ \par ICONS
+ The tree's open/close icons can be redefined with
+ Fl_Tree::openicon(), Fl_Tree::closeicon(). User icons
+ can either be changed globally with Fl_Tree::usericon(),
+ or on a per-item basis with Fl_Tree_Item::usericon().
+ \par
+ Various default preferences can be globally manipulated via Fl_Tree_Prefs,
+ including colors, margins, icons, connection lines, etc.
+
+ \par FONTS AND COLORS
+ When adding new items to the tree, the new items get the
+ defaults for fonts and colors from:
+ \par
+ - Fl_Tree::item_labelfont() -- The default item label font (default: FL_HELVETICA)
+ - Fl_Tree::item_labelsize() -- The default item label size (default: FL_NORMAL_SIZE)
+ - Fl_Tree::item_labelfgcolor() -- The default item label foreground color (default: FL_FOREGROUND_COLOR)
+ - Fl_Tree::item_labelbgcolor() -- The default item label background color (default: 0xffffffff, which tree uses as 'transparent')
+ \par
+ Each item (Fl_Tree_Item) inherits a copy of these font/color attributes when created,
+ and each item has its own methods to let the app change these values on a per-item basis
+ using methods of the same name:
+ \par
+ - Fl_Tree_Item::labelfont() -- The item's label font (default: FL_HELVETICA)
+ - Fl_Tree_Item::labelsize() -- The item's label size (default: FL_NORMAL_SIZE)
+ - Fl_Tree_Item::labelfgcolor() -- The item's label foreground color (default: FL_FOREGROUND_COLOR)
+ - Fl_Tree_Item::labelbgcolor() -- The item's label background color (default: 0xffffffff, which uses the tree's own bg color)
+
+ \par CALLBACKS
+ The tree's callback() will be invoked when items change state or are open/closed.
+ when() controls when mouse/keyboard events invoke the callback.
+ callback_item() and callback_reason() can be used to determine the cause of the callback. e.g.
+ \par
+ \code
+ void MyTreeCallback(Fl_Widget *w, void *data) {
+ Fl_Tree *tree = (Fl_Tree*)w;
+ Fl_Tree_Item *item = (Fl_Tree_Item*)tree->callback_item(); // get selected item
+ switch ( tree->callback_reason() ) {
+ case FL_TREE_REASON_SELECTED: [..]
+ case FL_TREE_REASON_DESELECTED: [..]
+ case FL_TREE_REASON_RESELECTED: [..]
+ case FL_TREE_REASON_OPENED: [..]
+ case FL_TREE_REASON_CLOSED: [..]
+ }
+ :
+ }
+ \endcode
+
+ \par SIMPLE EXAMPLES
+ To find all the selected items:
+ \par
+ \code
+ for ( Fl_Tree_Item *i=first_selected_item(); i; i=next_selected_item(i) )
+ printf("Item %s is selected\n", i->label());
+ \endcode
+ \par
+ To get an item's full menu pathname, use Fl_Tree::item_pathname(), e.g.
+ \par
+ \code
+ [..]
+ char pathname[256] = "???";
+ tree->item_pathname(pathname, sizeof(pathname), item); // eg. "Parent/Child/Item"
+ [..]
+ \endcode
+ \par
+ To walk all the items of the tree from top to bottom:
+ \par
+ \code
+ // Walk all the items in the tree, and print their labels
+ for ( Fl_Tree_Item *item = tree->first(); item; item = tree->next(item) ) {
+ printf("Item: %s\n", item->label());
+ }
+ \endcode
+ \par
+ To recursively walk all the children of a particular item,
+ define a function that uses recursion:
+ \par
+ \code
+ // Find all of the item's children and print an indented report of their labels
+ void my_print_all_children(Fl_Tree_Item *item, int indent=0) {
+ for ( int t=0; t<item->children(); t++ ) {
+ printf("%*s Item: %s\n", indent, "", item->child(t)->label());
+ my_print_all_children(item->child(t), indent+4); // recurse
+ }
+ }
+ \endcode
+ \par
+ To change the default label font and color when creating new items:
+ \par
+ \code
+ tree = new Fl_Tree(..);
+ tree->item_labelfont(FL_COURIER); // Use Courier font for all new items
+ tree->item_labelfgcolor(FL_RED); // Use red color for labels of all new items
+ [..]
+ // Now create the items in the tree using the above defaults.
+ tree->add("Aaa");
+ tree->add("Bbb");
+ \endcode
+ \par
+ To change the font and color of all existing items in the tree:
+ \par
+ \code
+ // Change the font and color of all items currently in the tree
+ for ( Fl_Tree_Item *item = tree->first(); item; item = tree->next(item) ) {
+ item->labelfont(FL_COURIER);
+ item->labelcolor(FL_RED);
+ }
+ \endcode
+
+ \par DISPLAY DESCRIPTION
+ The following image shows the tree's various visual elements
+ and the methods that control them:
+ \par
+ \image html tree-elements.png
+ \image latex tree-elements.png "Fl_Tree elements" width=6cm
+ \par
+ The following shows the protected dimension variables 'tree inner' (tix..)
+ and 'tree outer' (tox..):
+ \image html tree-dimensions.png "Fl_Tree inner/outer dimensions" width=6cm
+ \image latex tree-dimensions.png "Fl_Tree inner/outer dimensions" width=6cm
+
+ \par KEYBOARD BINDINGS
+ The following table lists keyboard bindings for navigating the tree:
+ \par
+ Keyboard | FL_TREE_SELECT_MULTI | FL_TREE_SELECT_SINGLE | FL_TREE_SELECT_NONE |
+ ------------------------|-----------------------------|-----------------------------|-----------------------------|
+ Ctrl-A (Linux/Windows) | Select all items | N/A | N/A |
+ Command-A (Mac) | Select all items | N/A | N/A |
+ Space | Selects item | Selects item | N/A |
+ Ctrl-Space | Toggle item | Toggle item | N/A |
+ Shift-Space | Extends selection | Selects item | N/A |
+ Enter | Toggles open/close | Toggles open/close | Toggles open/close |
+ Ctrl-Enter | Toggles open/close | Toggles open/close | Toggles open/close |
+ Shift-Enter | Toggles open/close | Toggles open/close | Toggles open/close |
+ Right / Left | Open/Close item | Open/Close item | Open/Close item |
+ Up / Down | Move focus box up/down | Move focus box up/down | N/A |
+ Shift-Up / Shift-Down | Extend selection up/down | Move focus up/down | N/A |
+ Home / End | Move to top/bottom of tree | Move to top/bottom of tree | Move to top/bottom of tree |
+ PageUp / PageDown | Page up/down | Page up/down | Page up/down |
+
+*/
/// \enum Fl_Tree_Reason
/// The reason the callback was invoked.