diff options
| author | Greg Ercolano <erco@seriss.com> | 2013-11-10 04:33:44 +0000 |
|---|---|---|
| committer | Greg Ercolano <erco@seriss.com> | 2013-11-10 04:33:44 +0000 |
| commit | 88cea3c82dd821e652608fcccce229fea0249d08 (patch) | |
| tree | af8f5c8c8d3336522a98959b717c4855eb2114c2 /src/Fl_Tree.cxx | |
| parent | 39a8ef3c4cb3fb61c7aec9717423490aad6604ff (diff) | |
o Added Fl_Tree::item_draw_callback(), letting one define a custom draw function for Fl_Tree_Item's.
o Added examples/tree-custom-draw-items.cxx to demonstrate its use.
o Fixed small doc error for recent Fl_Tree::get_selected_items()
git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3@10018 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/Fl_Tree.cxx')
| -rw-r--r-- | src/Fl_Tree.cxx | 50 |
1 files changed, 48 insertions, 2 deletions
diff --git a/src/Fl_Tree.cxx b/src/Fl_Tree.cxx index ba37dab3f..455aba716 100644 --- a/src/Fl_Tree.cxx +++ b/src/Fl_Tree.cxx @@ -936,7 +936,7 @@ Fl_Tree_Item *Fl_Tree::next_selected_item(Fl_Tree_Item *item) { /// ..do stuff with each selected item.. /// } /// \endcode -/// \param[in] items The returned array of selected items. +/// \param[in] ret_items The returned array of selected items. /// \returns The number of items in the returned array. /// \see first_selected_item(), next_selected_item() /// @@ -1787,7 +1787,9 @@ Fl_Tree_Item_Reselect_Mode Fl_Tree::item_reselect_mode() const { void Fl_Tree::item_reselect_mode(Fl_Tree_Item_Reselect_Mode mode) { _prefs.item_reselect_mode(mode); } +#endif +#if FLTK_ABI_VERSION >= 10303 /// Get the 'item draw mode' used for the tree Fl_Tree_Item_Draw_Mode Fl_Tree::item_draw_mode() const { return(_prefs.item_draw_mode()); @@ -1804,7 +1806,51 @@ void Fl_Tree::item_draw_mode(Fl_Tree_Item_Draw_Mode val) { void Fl_Tree::item_draw_mode(int val) { _prefs.item_draw_mode(Fl_Tree_Item_Draw_Mode(val)); } -#endif /*FLTK_ABI_VERSION*/ + +/// Set a callback to be invoked to handle drawing the Fl_Tree_Item +/// instead of the default label drawing behavior. Lets one define +/// custom drawing behavior for Fl_Tree_Item's. eg: +/// \code +/// static void draw_item(Fl_Tree_Item *item, void *data) { +/// Fl_Tree *tree = (Fl_Tree*)data; +/// int X=item->label_x(), Y=item->label_y(), +/// W=item->label_w(), H=item->label_h(); +/// // Draw the background +/// fl_color(item->is_selected() ? tree->selection_color() : item->labelbgcolor()); +/// fl_rectf(X,Y,W,H); +/// // Draw text +/// fl_font(item->labelfont(), item->labelsize()); +/// fl_color(item->labelfgcolor()); +/// fl_draw("Some text", X+tree->labelmarginleft(),Y,W,H, FL_ALIGN_LEFT); +/// } +/// .. +/// int main() { +/// Fl_Tree *tree = new Fl_Tree(0,0,100,100); +/// tree->item_draw_callback(draw_item, (void*)tree); +/// [..] +/// \endcode +/// +/// Note: This only affects the drawing of item's labels; +/// it does not affect the drawing of widgets assigned with +/// Fl_Tree_Item::widget(). +/// +void Fl_Tree::item_draw_callback(Fl_Tree_Item_Draw_Callback *cb, void *data) { + _prefs.item_draw_callback(cb,data); +} +/// Get the current item draw callback. Returns 0 if none. +Fl_Tree_Item_Draw_Callback* Fl_Tree::item_draw_callback() const { + return(_prefs.item_draw_callback()); +} +/// Get the current item draw callback's user data. +void* Fl_Tree::item_draw_user_data() const { + return(_prefs.item_draw_user_data()); +} +/// Invoke the configured item_draw_callback(). +// Do NOT call this if no item_draw_callback() was configured. +void Fl_Tree::do_item_draw_callback(Fl_Tree_Item *o) const { + _prefs.do_item_draw_callback(o); +} +#endif /// See if \p item is currently displayed on-screen (visible within the widget). /// This can be used to detect if the item is scrolled off-screen. |
