Small fixed to SebHoll's user_data() mods (init + copy ctor),

added select_all() to Fl_Tree and Fl_Tree_Item.



git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@6957 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
This commit is contained in:
Greg Ercolano 2009-12-08 08:39:31 +00:00
parent a657069cc5
commit 79cd1d2ccb
4 changed files with 31 additions and 1 deletions

View File

@ -415,6 +415,7 @@ public:
int deselect_all(Fl_Tree_Item *item=0);
int select_only(Fl_Tree_Item *selitem);
int select_all(Fl_Tree_Item *item=0);
/// See if the specified item is selected.
/// \return

View File

@ -221,6 +221,21 @@ public:
select(); // select if deselected
}
}
/// Select self and all children
/// Returns count of how many items were in the 'deselected' state,
/// ie. how many items were "changed".
///
int select_all() {
int count = 0;
if ( ! is_selected() ) {
select();
++count;
}
for ( int t=0; t<children(); t++ ) {
count += child(t)->select_all();
}
return(count);
}
/// Disable the item's selection state.
void deselect() {
_selected = 0;

View File

@ -347,6 +347,19 @@ int Fl_Tree::deselect_all(Fl_Tree_Item *item) {
return(count);
}
/// Select item and all its children.
/// If item is NULL, root() is used.
/// Handles calling redraw() if anything was changed.
/// Returns count of how many items were in the 'deselected' state,
/// ie. how many items were "changed".
///
int Fl_Tree::select_all(Fl_Tree_Item *item) {
item = item ? item : root(); // NULL? use root()
int count = item->select_all();
if ( count ) redraw(); // anything changed? cause redraw
return(count);
}
/// Select only this item.
/// If item is NULL, root() is used.
/// Handles calling redraw() if anything was changed.

View File

@ -64,6 +64,7 @@ Fl_Tree_Item::Fl_Tree_Item(const Fl_Tree_Prefs &prefs) {
_label_xywh[2] = 0;
_label_xywh[3] = 0;
_usericon = 0;
_userdata = 0;
_parent = 0;
}
@ -103,7 +104,7 @@ Fl_Tree_Item::Fl_Tree_Item(const Fl_Tree_Item *o) {
_label_xywh[2] = o->_label_xywh[2];
_label_xywh[3] = o->_label_xywh[3];
_usericon = o->usericon();
_userdata = 0;
_userdata = o->user_data();
_parent = o->_parent;
}