summaryrefslogtreecommitdiff
path: root/FL/Fl_Tree.H
diff options
context:
space:
mode:
authorGreg Ercolano <erco@seriss.com>2012-04-23 16:31:51 +0000
committerGreg Ercolano <erco@seriss.com>2012-04-23 16:31:51 +0000
commitd07ef8020747fbeac907417b1420ed19690bec16 (patch)
tree3f8dff86a0bd9c06564b4790078b8202fc6d8f34 /FL/Fl_Tree.H
parentfd9f4e61323e569575ff9a204622182c2da76365 (diff)
Various Fl_Tree enhancements:
o Added keyboard navigation table o Added Shift-Click to extend selection, Ctrl-Space to toggle selection, Enter key toggle o Added protected extend_selection(from_item,to_item) o Cleanup of Fl_Tree::handle() o Limit ^A to multi-select mode only o Disable focus box in SELECT_NONE mode o test/tree: changed default mode to 'multiselect' (most often needs testing) git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@9385 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'FL/Fl_Tree.H')
-rw-r--r--FL/Fl_Tree.H73
1 files changed, 73 insertions, 0 deletions
diff --git a/FL/Fl_Tree.H b/FL/Fl_Tree.H
index 453841007..64fd234f7 100644
--- a/FL/Fl_Tree.H
+++ b/FL/Fl_Tree.H
@@ -179,6 +179,78 @@
/// \image html tree-elements.png
/// \image latex tree-elements.png "Fl_Tree dimensions" width=6cm
///
+/// 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>
+///
/// \enum Fl_Tree_Reason
/// The reason the callback was invoked.
@@ -216,6 +288,7 @@ protected:
void item_clicked(Fl_Tree_Item* val);
void do_callback_for_item(Fl_Tree_Item* item, Fl_Tree_Reason reason);
Fl_Tree_Item *next_visible_item(Fl_Tree_Item *start, int dir);
+ void extend_selection(Fl_Tree_Item *from, Fl_Tree_Item *to);
public:
Fl_Tree(int X, int Y, int W, int H, const char *L=0);