diff options
| author | Greg Ercolano <erco@seriss.com> | 2012-04-19 08:58:22 +0000 |
|---|---|---|
| committer | Greg Ercolano <erco@seriss.com> | 2012-04-19 08:58:22 +0000 |
| commit | 526efe8a137206878995cc9308b57c939ae586c1 (patch) | |
| tree | 5419390f59f1cef7a1e98246b5f2b8dd5e4e3413 | |
| parent | 055a7d47ed3e41d1195827fa660ded232dbd8100 (diff) | |
> Added ^A to 'select all' when tree has focus
> A user click on the tree's background does a 'deselect all'
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@9359 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
| -rw-r--r-- | src/Fl_Tree.cxx | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/src/Fl_Tree.cxx b/src/Fl_Tree.cxx index 588e58894..2d68a3037 100644 --- a/src/Fl_Tree.cxx +++ b/src/Fl_Tree.cxx @@ -236,6 +236,15 @@ int Fl_Tree::handle(int e) { } break; } + case 'a': + case 'A': { + if ( Fl::event_state() & FL_CTRL ) { + select_all(); + take_focus(); + return(1); + } + break; + } } } } @@ -259,14 +268,23 @@ int Fl_Tree::handle(int e) { // fprintf(stderr, "ERCODEBUG: Fl_Tree::handle(): Event was %s (%d)\n", fl_eventnames[e], e); // DEBUGGING if ( ! _root ) return(ret); switch ( e ) { - case FL_PUSH: { - // clicked on a tree item? + case FL_PUSH: { // clicked on tree if (Fl::visible_focus() && handle(FL_FOCUS)) { Fl::focus(this); } _lastselect = 0; Fl_Tree_Item *o = _root->find_clicked(_prefs); - if ( ! o ) break; + if ( !o ) { // clicked, but not on an item? + switch ( _prefs.selectmode() ) { + case FL_TREE_SELECT_NONE: + break; + case FL_TREE_SELECT_SINGLE: + case FL_TREE_SELECT_MULTI: + deselect_all(); + break; + } + break; + } set_item_focus(o); // becomes new focus widget redraw(); ret |= 1; // handled |
