diff options
| author | Greg Ercolano <erco@seriss.com> | 2012-04-23 16:31:51 +0000 |
|---|---|---|
| committer | Greg Ercolano <erco@seriss.com> | 2012-04-23 16:31:51 +0000 |
| commit | d07ef8020747fbeac907417b1420ed19690bec16 (patch) | |
| tree | 3f8dff86a0bd9c06564b4790078b8202fc6d8f34 /FL/Fl_Tree.H | |
| parent | fd9f4e61323e569575ff9a204622182c2da76365 (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.H | 73 |
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); |
