]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/treectrl.cpp
reformatted to fit in the page width
[wxWidgets.git] / src / msw / treectrl.cpp
index 242eab62b1e51998924a14c590c28aeb4d42eacd..ee2a775b345b2db3ebfbed41ea8532b6d4b33ece 100644 (file)
@@ -303,27 +303,24 @@ struct wxTreeViewItem : public TV_ITEM
 
 // wxVirutalNode is used in place of a single root when 'hidden' root is
 // specified.
-class wxVirtualNode
+class wxVirtualNode : public wxTreeViewItem
 {
 public:
     wxVirtualNode(wxTreeItemData *data)
+        : wxTreeViewItem(TVI_ROOT, 0)
     {
         m_data = data;
-
-        m_tvItem = new wxTreeViewItem(TVI_ROOT, 0);
     }
 
     ~wxVirtualNode()
     {
         delete m_data;
-        delete m_tvItem;
     }
 
     wxTreeItemData *GetData() const { return m_data; }
     void SetData(wxTreeItemData *data) { delete m_data; m_data = data; }
 
 private:
-    wxTreeViewItem *m_tvItem;
     wxTreeItemData *m_data;
 };
 
@@ -1298,11 +1295,21 @@ wxTreeItemId wxTreeCtrl::GetSelection() const
 
 wxTreeItemId wxTreeCtrl::GetParent(const wxTreeItemId& item) const
 {
-    HTREEITEM hItem = TreeView_GetParent(GetHwnd(), HITEM(item));
-    if ( !hItem && HasFlag(wxTR_HIDE_ROOT) )
+    HTREEITEM hItem;
+
+    if ( IS_VIRTUAL_ROOT(item) )
     {
-        // the top level items should have the virtual root as their parent
-        hItem = TVI_ROOT;
+        // no parent for the virtual root
+        hItem = 0;
+    }
+    else // normal item
+    {
+        hItem = TreeView_GetParent(GetHwnd(), HITEM(item));
+        if ( !hItem && HasFlag(wxTR_HIDE_ROOT) )
+        {
+            // the top level items should have the virtual root as their parent
+            hItem = TVI_ROOT;
+        }
     }
 
     return wxTreeItemId((WXHTREEITEM)hItem);
@@ -1507,7 +1514,7 @@ wxTreeItemId wxTreeCtrl::AddRoot(const wxString& text,
         return TVI_ROOT;
     }
 
-    return DoInsertItem(wxTreeItemId((WXHTREEITEM) 0), (WXHTREEITEM) 0,
+    return DoInsertItem(wxTreeItemId((long)(WXHTREEITEM) 0), (long)(WXHTREEITEM) 0,
                         text, image, selectedImage, data);
 }