// Because the objects of this class are deleted by the tree, they should
// always be allocated on the heap!
// ----------------------------------------------------------------------------
-class WXDLLEXPORT wxTreeItemData
+class WXDLLEXPORT wxTreeItemData: public wxClientData
{
friend class wxTreeCtrl;
public:
// default copy ctor/assignment operator are ok
- // dtor is virtual and all the items are deleted by the tree control
- // when it's deleted, so you normally don't have to care about freeing
- // memory allocated in your wxTreeItemData-derived class
- virtual ~wxTreeItemData() { }
-
// accessor: get the item associated with us
const wxTreeItemId& GetId() const { return m_pItem; }
void SetId(const wxTreeItemId& id) { m_pItem = id; }
// is this item currently selected (the same as has focus)?
bool IsSelected(const wxTreeItemId& item) const;
+ // number of children
+ // ------------------
+
+ // if 'recursively' is FALSE, only immediate children count, otherwise
+ // the returned number is the number of all items in this branch
+ size_t GetChildrenCount(const wxTreeItemId& item, bool recursively = TRUE);
+
// navigation
// ----------
void SortChildren(const wxTreeItemId& item,
wxTreeItemCmpFunc *cmpFunction = NULL);
- // implementation
- // --------------
- // wxWindows callbacks
- void OnPaint( const wxPaintEvent &event );
- void OnSetFocus( const wxFocusEvent &event );
- void OnKillFocus( const wxFocusEvent &event );
+ void OnPaint( wxPaintEvent &event );
+ void OnSetFocus( wxFocusEvent &event );
+ void OnKillFocus( wxFocusEvent &event );
void OnChar( wxKeyEvent &event );
- void OnMouse( const wxMouseEvent &event );
+ void OnMouse( wxMouseEvent &event );
+ void OnIdle( wxIdleEvent &event );
protected:
wxGenericTreeItem *m_anchor;
wxGenericTreeItem *m_current;
bool m_hasFocus;
+ bool m_dirty;
int m_xScroll,m_yScroll;
unsigned int m_indent;
int m_lineHeight;