]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/listctrl.cpp
Committing in .
[wxWidgets.git] / src / msw / listctrl.cpp
index 1344f75e9ba0b5fb38ac9da73a9fc4f80238a7a8..c527a6f0d387454d4ee9c8f77f168e48f9d382fb 100644 (file)
@@ -1049,13 +1049,41 @@ bool wxListCtrl::Arrange(int flag)
 // Deletes an item
 bool wxListCtrl::DeleteItem(long item)
 {
 // Deletes an item
 bool wxListCtrl::DeleteItem(long item)
 {
-    return (ListView_DeleteItem(GetHwnd(), (int) item) != 0);
+    if ( !ListView_DeleteItem(GetHwnd(), (int) item) )
+    {
+        wxLogLastError(_T("ListView_DeleteItem"));
+        return FALSE;
+    }
+
+    // the virtual list control doesn't refresh itself correctly, help it
+    if ( IsVirtual() )
+    {
+        // we need to refresh all the lines below the one which was deleted
+        wxRect rectItem;
+        if ( item > 0 && GetItemCount() )
+        {
+            GetItemRect(item - 1, rectItem);
+        }
+        else
+        {
+            rectItem.y =
+            rectItem.height = 0;
+        }
+
+        wxRect rectWin = GetRect();
+        rectWin.height = rectWin.GetBottom() - rectItem.GetBottom();
+        rectWin.y = rectItem.GetBottom();
+
+        RefreshRect(rectWin);
+    }
+
+    return TRUE;
 }
 
 // Deletes all items
 bool wxListCtrl::DeleteAllItems()
 {
 }
 
 // Deletes all items
 bool wxListCtrl::DeleteAllItems()
 {
-    return (ListView_DeleteAllItems(GetHwnd()) != 0);
+    return ListView_DeleteAllItems(GetHwnd()) != 0;
 }
 
 // Deletes all items
 }
 
 // Deletes all items
@@ -1604,7 +1632,7 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
                 {
                     eventType = wxEVT_COMMAND_LIST_END_LABEL_EDIT;
                     LV_DISPINFO *info = (LV_DISPINFO *)lParam;
                 {
                     eventType = wxEVT_COMMAND_LIST_END_LABEL_EDIT;
                     LV_DISPINFO *info = (LV_DISPINFO *)lParam;
-                    wxConvertFromMSWListItem(GetHwnd(), event.m_item, info->item);
+                    wxConvertFromMSWListItem(NULL, event.m_item, info->item);
                     if ( info->item.pszText == NULL || info->item.iItem == -1 )
                         return FALSE;
 
                     if ( info->item.pszText == NULL || info->item.iItem == -1 )
                         return FALSE;
 
@@ -1776,7 +1804,7 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
                     }
 
 #if defined(_WIN32_IE) && _WIN32_IE >= 0x300 \
                     }
 
 #if defined(_WIN32_IE) && _WIN32_IE >= 0x300 \
-        && !( defined(__GNUWIN32__) && !wxCHECK_W32API_VERSION( 1, 0 ) )
+        && !( defined(__GNUWIN32__) && !wxCHECK_W32API_VERSION( 1, 1 ) )
                     if ( lvi.mask & LVIF_IMAGE )
                     {
                         lvi.iImage = OnGetItemImage(item);
                     if ( lvi.mask & LVIF_IMAGE )
                     {
                         lvi.iImage = OnGetItemImage(item);
@@ -2288,7 +2316,7 @@ static void wxConvertToMSWListCol(int col, const wxListItem& item,
     }
 
 #if defined(_WIN32_IE) && _WIN32_IE >= 0x300 \
     }
 
 #if defined(_WIN32_IE) && _WIN32_IE >= 0x300 \
-        && !( defined(__GNUWIN32__) && !wxCHECK_W32API_VERSION( 1, 0 ) )
+        && !( defined(__GNUWIN32__) && !wxCHECK_W32API_VERSION( 1, 1 ) )
     if ( item.m_mask & wxLIST_MASK_IMAGE )
     {
         if ( wxTheApp->GetComCtl32Version() >= 470 )
     if ( item.m_mask & wxLIST_MASK_IMAGE )
     {
         if ( wxTheApp->GetComCtl32Version() >= 470 )