+static void
+wxGetBestTreeSize(const wxTreeCtrlBase* treeCtrl, wxTreeItemId id, wxSize& size)
+{
+    wxRect rect;
+
+    if ( treeCtrl->GetBoundingRect(id, rect, true /* just the item */) )
+    {
+        size.IncTo(wxSize(rect.GetRight(), rect.GetBottom()));
+    }
+
+    wxTreeItemIdValue cookie;
+    for ( wxTreeItemId item = treeCtrl->GetFirstChild(id, cookie);
+          item.IsOk();
+          item = treeCtrl->GetNextChild(id, cookie) )
+    {
+        wxGetBestTreeSize(treeCtrl, item, size);
+    }
+}
+