]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/treectrl.cpp
Improved selection mode handling in wxGrid::SelectBlock
[wxWidgets.git] / src / msw / treectrl.cpp
index c6c1cd6d355d36883bba61270fbb905081fba866..7f8403c58fdcb0f24556a7e94b39ca723c4ab908 100644 (file)
 // looks quite ugly.
 #define wxUSE_CHECKBOXES_IN_MULTI_SEL_TREE 0
 
-// from msw/window.cpp
-extern bool wxIsShiftDown();
-extern bool wxIsCtrlDown();
-
 // ----------------------------------------------------------------------------
 // private functions
 // ----------------------------------------------------------------------------
@@ -101,7 +97,6 @@ static HTREEITEM GetItemFromPoint(HWND hwndTV, int x, int y)
     tvht.pt.x = x;
     tvht.pt.y = y;
 
-    // TreeView_HitTest() doesn't do the right cast in mingw32 headers
     return (HTREEITEM)TreeView_HitTest(hwndTV, &tvht);
 }
 
@@ -156,7 +151,7 @@ static void SelectRange(HWND hwndTV,
 {
     // find the first (or last) item and select it
     bool cont = TRUE;
-    HTREEITEM htItem = TreeView_GetRoot(hwndTV);
+    HTREEITEM htItem = (HTREEITEM)TreeView_GetRoot(hwndTV);
     while ( htItem && cont )
     {
         if ( (htItem == htFirst) || (htItem == htLast) )
@@ -176,7 +171,7 @@ static void SelectRange(HWND hwndTV,
             }
         }
 
-        htItem = TreeView_GetNextVisible(hwndTV, htItem);
+        htItem = (HTREEITEM)TreeView_GetNextVisible(hwndTV, htItem);
     }
 
     // select the items in range
@@ -190,7 +185,7 @@ static void SelectRange(HWND hwndTV,
 
         cont = (htItem != htFirst) && (htItem != htLast);
 
-        htItem = TreeView_GetNextVisible(hwndTV, htItem);
+        htItem = (HTREEITEM)TreeView_GetNextVisible(hwndTV, htItem);
     }
 
     // unselect the rest
@@ -203,7 +198,7 @@ static void SelectRange(HWND hwndTV,
                 UnselectItem(hwndTV, htItem);
             }
 
-            htItem = TreeView_GetNextVisible(hwndTV, htItem);
+            htItem = (HTREEITEM)TreeView_GetNextVisible(hwndTV, htItem);
         }
     }
 
@@ -218,7 +213,7 @@ static void SelectRange(HWND hwndTV,
 static void SetFocus(HWND hwndTV, HTREEITEM htItem)
 {
     // the current focus
-    HTREEITEM htFocus = TreeView_GetSelection(hwndTV);
+    HTREEITEM htFocus = (HTREEITEM)TreeView_GetSelection(hwndTV);
 
     if ( htItem )
     {
@@ -1203,6 +1198,10 @@ wxTreeItemId wxTreeCtrl::DoInsertItem(const wxTreeItemId& parent,
                                       int image, int selectedImage,
                                       wxTreeItemData *data)
 {
+    wxCHECK_MSG( parent.IsOk() || !TreeView_GetRoot(GetHwnd()),
+                 wxTreeItemId(),
+                 _T("can't have more than one root in the tree") );
+
     TV_INSERTSTRUCT tvIns;
     tvIns.hParent = HITEM(parent);
     tvIns.hInsertAfter = HITEM(hInsertAfter);
@@ -1778,14 +1777,14 @@ long wxTreeCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
             case WM_MOUSEMOVE:
                 if ( m_dragImage )
                 {
-                    m_dragImage->Move(wxPoint(x, y), this);
+                    m_dragImage->Move(wxPoint(x, y));
                     if ( htItem )
                     {
                         // highlight the item as target (hiding drag image is
                         // necessary - otherwise the display will be corrupted)
-                        m_dragImage->Hide(this);
+                        m_dragImage->Hide();
                         TreeView_SelectDropTarget(GetHwnd(), htItem);
-                        m_dragImage->Show(this);
+                        m_dragImage->Show();
                     }
                 }
                 break;
@@ -1794,7 +1793,7 @@ long wxTreeCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
             case WM_RBUTTONUP:
                 if ( m_dragImage )
                 {
-                    m_dragImage->EndDrag(this);
+                    m_dragImage->EndDrag();
                     delete m_dragImage;
                     m_dragImage = NULL;
 
@@ -1842,7 +1841,7 @@ long wxTreeCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
         // we handle.arrows and space, but not page up/down and home/end: the
         // latter should be easy, but not the former
 
-        HTREEITEM htSel = TreeView_GetSelection(GetHwnd());
+        HTREEITEM htSel = (HTREEITEM)TreeView_GetSelection(GetHwnd());
         if ( !m_htSelStart )
         {
             m_htSelStart = (WXHTREEITEM)htSel;
@@ -1875,9 +1874,9 @@ long wxTreeCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
             {
                 (void)wxControl::MSWWindowProc(nMsg, wParam, lParam);
 
-                HTREEITEM htNext =
-                    wParam == VK_UP ? TreeView_GetPrevVisible(GetHwnd(), htSel)
-                                    : TreeView_GetNextVisible(GetHwnd(), htSel);
+                HTREEITEM htNext = (HTREEITEM)(wParam == VK_UP
+                                    ? TreeView_GetPrevVisible(GetHwnd(), htSel)
+                                    : TreeView_GetNextVisible(GetHwnd(), htSel));
 
                 if ( !htNext )
                 {
@@ -2202,7 +2201,7 @@ bool wxTreeCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
 
                 m_dragImage = new wxDragImage(*this, event.m_item);
                 m_dragImage->BeginDrag(wxPoint(0, 0), this);
-                m_dragImage->Show(this);
+                m_dragImage->Show();
             }
             break;