]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/treectrl.cpp
Simplified event based Drag API for wxDataViewCtrl
[wxWidgets.git] / src / msw / treectrl.cpp
index 9cf8532ae622247551b50c09af1d06766dfa19a5..d358be2f328155f21f264b872c8c273e5c7f47da 100644 (file)
@@ -797,11 +797,6 @@ bool wxTreeCtrl::DoGetItem(wxTreeViewItem *tvItem) const
     wxCHECK_MSG( tvItem->hItem != TVI_ROOT, false,
                  _T("can't retrieve virtual root item") );
 
-    return DoGetPossiblyRootItem(tvItem);
-}
-
-bool wxTreeCtrl::DoGetPossiblyRootItem(wxTreeViewItem *tvItem) const
-{
     if ( !TreeView_GetItem(GetHwnd(), tvItem) )
     {
         wxLogLastError(wxT("TreeView_GetItem"));
@@ -997,7 +992,14 @@ wxTreeItemParam *wxTreeCtrl::GetItemParam(const wxTreeItemId& item) const
 
     wxTreeViewItem tvItem(item, TVIF_PARAM);
 
-    if ( !DoGetPossiblyRootItem(&tvItem) )
+    // hidden root may still have data.
+    if ( IS_VIRTUAL_ROOT(item) )
+    {
+        return GET_VIRTUAL_ROOT()->GetParam();
+    }
+
+    // visible node.
+    if ( !DoGetItem(&tvItem) )
     {
         return NULL;
     }
@@ -1211,8 +1213,14 @@ bool wxTreeCtrl::ItemHasChildren(const wxTreeItemId& item) const
 {
     wxCHECK_MSG( item.IsOk(), false, wxT("invalid tree item") );
 
+    if ( IS_VIRTUAL_ROOT(item) )
+    {
+        wxTreeItemIdValue cookie;
+        return GetFirstChild(item, cookie).IsOk();
+    }
+
     wxTreeViewItem tvItem(item, TVIF_CHILDREN);
-    DoGetPossiblyRootItem(&tvItem);
+    DoGetItem(&tvItem);
 
     return tvItem.cChildren != 0;
 }