else // use precise, if potentially slow, size computation method
{
// iterate over all items recursively
- wxGetBestTreeSize(this, GetRootItem(), size);
+ wxTreeItemId idRoot = GetRootItem();
+ if ( idRoot.IsOk() )
+ wxGetBestTreeSize(this, idRoot, size);
}
// need some minimal size even for empty tree
void wxTreeCtrlBase::ExpandAll()
{
+ if ( IsEmpty() )
+ return;
+
ExpandAllChildren(GetRootItem());
}
}
}
+void wxTreeCtrlBase::CollapseAll()
+{
+ if ( IsEmpty() )
+ return;
+
+ CollapseAllChildren(GetRootItem());
+}
+
+void wxTreeCtrlBase::CollapseAllChildren(const wxTreeItemId& item)
+{
+ // first (recursively) collapse all the children
+ wxTreeItemIdValue cookie;
+ for ( wxTreeItemId idCurr = GetFirstChild(item, cookie);
+ idCurr.IsOk();
+ idCurr = GetNextChild(item, cookie) )
+ {
+ CollapseAllChildren(idCurr);
+ }
+
+ // then collapse this element too
+ Collapse(item);
+}
+
+bool wxTreeCtrlBase::IsEmpty() const
+{
+ return !GetRootItem().IsOk();
+}
+
#endif // wxUSE_TREECTRL