summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Fl_Tree.cxx22
-rw-r--r--src/Fl_Tree_Item.cxx8
-rw-r--r--src/Fl_Tree_Prefs.cxx6
3 files changed, 20 insertions, 16 deletions
diff --git a/src/Fl_Tree.cxx b/src/Fl_Tree.cxx
index 5d29b7cfe..fe3a8e267 100644
--- a/src/Fl_Tree.cxx
+++ b/src/Fl_Tree.cxx
@@ -697,10 +697,13 @@ int Fl_Tree::deselect_all(Fl_Tree_Item *item, int docallback) {
item = item ? item : first(); // NULL? use first()
if ( ! item ) return(0);
int count = 0;
- for ( ; item; item = next(item) ) {
- if ( item->is_selected() )
- if ( deselect(item, docallback) )
- ++count;
+ // Deselect item
+ if ( item->is_selected() )
+ if ( deselect(item, docallback) )
+ ++count;
+ // Deselect its children
+ for ( int t=0; t<item->children(); t++ ) {
+ count += deselect_all(item->child(t), docallback); // recurse
}
return(count);
}
@@ -726,10 +729,13 @@ int Fl_Tree::select_all(Fl_Tree_Item *item, int docallback) {
item = item ? item : first(); // NULL? use first()
if ( ! item ) return(0);
int count = 0;
- for ( ; item; item = next(item) ) {
- if ( !item->is_selected() )
- if ( select(item, docallback) )
- ++count;
+ // Select item
+ if ( !item->is_selected() )
+ if ( select(item, docallback) )
+ ++count;
+ // Select its children
+ for ( int t=0; t<item->children(); t++ ) {
+ count += select_all(item->child(t), docallback); // recurse
}
return(count);
}
diff --git a/src/Fl_Tree_Item.cxx b/src/Fl_Tree_Item.cxx
index 15a45833a..329c0ef33 100644
--- a/src/Fl_Tree_Item.cxx
+++ b/src/Fl_Tree_Item.cxx
@@ -44,8 +44,8 @@ Fl_Tree_Item::Fl_Tree_Item(const Fl_Tree_Prefs &prefs) {
_label = 0;
_labelfont = prefs.labelfont();
_labelsize = prefs.labelsize();
- _labelfgcolor = prefs.fgcolor();
- _labelbgcolor = prefs.bgcolor();
+ _labelfgcolor = prefs.labelfgcolor();
+ _labelbgcolor = prefs.labelbgcolor();
_widget = 0;
_open = 1;
_visible = 1;
@@ -562,8 +562,8 @@ void Fl_Tree_Item::draw(int X, int &Y, int W, Fl_Widget *tree,
W += prefs.openicon()->w();
}
// Colors, fonts
- Fl_Color fg = _selected ? prefs.bgcolor() : _labelfgcolor;
- Fl_Color bg = _selected ? prefs.selectcolor() : _labelbgcolor;
+ Fl_Color fg = _selected ? _labelbgcolor : _labelfgcolor; // selected uses bgcolor, unselected uses fgcolor
+ Fl_Color bg = _selected ? tree->selection_color() : _labelbgcolor; // selected uses selectcolor, unselected uses bgcolor
if ( ! _active ) {
fg = fl_inactive(fg);
if ( _selected ) bg = fl_inactive(bg);
diff --git a/src/Fl_Tree_Prefs.cxx b/src/Fl_Tree_Prefs.cxx
index 7884c2afc..df5f856ac 100644
--- a/src/Fl_Tree_Prefs.cxx
+++ b/src/Fl_Tree_Prefs.cxx
@@ -136,10 +136,8 @@ Fl_Tree_Prefs::Fl_Tree_Prefs() {
_usericonmarginleft = 3;
_labelmarginleft = 3;
_linespacing = 0;
- _fgcolor = FL_BLACK;
- _bgcolor = FL_WHITE;
- _selectcolor = FL_DARK_BLUE;
- _inactivecolor = FL_GRAY;
+ _labelfgcolor = FL_BLACK;
+ _labelbgcolor = FL_WHITE;
_connectorcolor = Fl_Color(43);
#ifdef __APPLE__
_connectorstyle = FL_TREE_CONNECTOR_NONE;