]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/treectrl.cpp
Undefed Yield symbol if defined, else syntax error
[wxWidgets.git] / src / msw / treectrl.cpp
index 061374546bba7d5291ce30a3a048fb62f64fa4fb..eb6dfc49774a897eaf883c1253c905ccc3225502 100644 (file)
@@ -377,6 +377,13 @@ void wxTreeCtrl::SetItemBold(const wxTreeItemId& item, bool bold)
     DoSetItem(&tvItem);
 }
 
+void wxTreeCtrl::SetItemDropHighlight(const wxTreeItemId& item, bool highlight)
+{
+    wxTreeViewItem tvItem(item, TVIF_STATE, TVIS_DROPHILITED);
+    tvItem.state = highlight ? TVIS_DROPHILITED : 0;
+    DoSetItem(&tvItem);
+}
+
 // ----------------------------------------------------------------------------
 // Item status
 // ----------------------------------------------------------------------------
@@ -522,6 +529,13 @@ wxTreeItemId wxTreeCtrl::DoInsertItem(const wxTreeItemId& parent,
     TV_INSERTSTRUCT tvIns;
     tvIns.hParent = (HTREEITEM) (WXHTREEITEM)parent;
     tvIns.hInsertAfter = (HTREEITEM) (WXHTREEITEM) hInsertAfter;
+
+    // This is how we insert the item as the first child: supply a NULL hInsertAfter
+    if (tvIns.hInsertAfter == (HTREEITEM) 0)
+    {
+        tvIns.hInsertAfter = TVI_FIRST;
+    }
+
     UINT mask = 0;
     if ( !text.IsEmpty() )
     {
@@ -657,8 +671,10 @@ void wxTreeCtrl::DeleteAllItems()
 
 void wxTreeCtrl::DoExpand(const wxTreeItemId& item, int flag)
 {
-    wxASSERT_MSG( flag == TVE_COLLAPSE || flag == TVE_COLLAPSERESET ||
-                  flag == TVE_EXPAND   || flag == TVE_TOGGLE,
+    wxASSERT_MSG( flag == TVE_COLLAPSE ||
+                  flag == (TVE_COLLAPSE | TVE_COLLAPSERESET) ||
+                  flag == TVE_EXPAND   ||
+                  flag == TVE_TOGGLE,
                   "Unknown flag in wxTreeCtrl::DoExpand" );
 
     // TreeView_Expand doesn't send TVN_ITEMEXPAND(ING) messages, so we must
@@ -698,7 +714,7 @@ void wxTreeCtrl::Collapse(const wxTreeItemId& item)
 
 void wxTreeCtrl::CollapseAndReset(const wxTreeItemId& item)
 {
-    DoExpand(item, TVE_COLLAPSERESET);
+    DoExpand(item, TVE_COLLAPSE | TVE_COLLAPSERESET);
 }
 
 void wxTreeCtrl::Toggle(const wxTreeItemId& item)
@@ -1048,6 +1064,7 @@ bool wxTreeCtrl::MSWNotify(WXWPARAM wParam, WXLPARAM lParam, WXLPARAM *result)
         NM_TREEVIEW* tv = (NM_TREEVIEW *)lParam;
         wxTreeItemData *data = (wxTreeItemData *)tv->itemOld.lParam;
         delete data; // may be NULL, ok
+        processed = TRUE; // Make sure we don't get called twice
     }
 
     *result = !event.IsAllowed();