X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/244531bc9662a5930f0c785cbc9d1383f70b6232..00c813596e3eefdd028365acf9542355937e5531:/src/msw/listctrl.cpp diff --git a/src/msw/listctrl.cpp b/src/msw/listctrl.cpp index 1344f75e9b..c527a6f0d3 100644 --- a/src/msw/listctrl.cpp +++ b/src/msw/listctrl.cpp @@ -1049,13 +1049,41 @@ bool wxListCtrl::Arrange(int flag) // 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() { - return (ListView_DeleteAllItems(GetHwnd()) != 0); + return ListView_DeleteAllItems(GetHwnd()) != 0; } // 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; - 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; @@ -1776,7 +1804,7 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) } #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); @@ -2288,7 +2316,7 @@ static void wxConvertToMSWListCol(int col, const wxListItem& item, } #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 )