summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGreg Ercolano <erco@seriss.com>2012-04-19 08:58:22 +0000
committerGreg Ercolano <erco@seriss.com>2012-04-19 08:58:22 +0000
commit526efe8a137206878995cc9308b57c939ae586c1 (patch)
tree5419390f59f1cef7a1e98246b5f2b8dd5e4e3413
parent055a7d47ed3e41d1195827fa660ded232dbd8100 (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.cxx24
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