+static void wxGetBestTreeSize(const wxTreeCtrlBase* treeCtrl, const wxTreeItemId& id, wxSize& size)
+{
+    wxRect rect;
+
+    if ( treeCtrl->GetBoundingRect(id, rect, true) )
+    {
+        if ( size.x < rect.x + rect.width )
+            size.x = rect.x + rect.width;
+        if ( size.y < rect.y + rect.height )
+            size.y = rect.y + rect.height;
+    }
+
+    wxTreeItemIdValue cookie;
+    for ( wxTreeItemId item = treeCtrl->GetFirstChild(id, cookie);
+          item.IsOk();
+          item = treeCtrl->GetNextChild(id, cookie) )
+    {
+        wxGetBestTreeSize(treeCtrl, item, size);
+    }
+}
+