X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/614391dc087ca70b145e07c442815217f8aa3162..f35719ef1d3b34fb42ebfab33944ea9cdc4413eb:/src/msw/listctrl.cpp diff --git a/src/msw/listctrl.cpp b/src/msw/listctrl.cpp index c64d714f58..59abe4c9c5 100644 --- a/src/msw/listctrl.cpp +++ b/src/msw/listctrl.cpp @@ -1621,8 +1621,22 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result) const NM_CACHEHINT *cacheHint = (NM_CACHEHINT *)lParam; eventType = wxEVT_COMMAND_LIST_CACHE_HINT; - event.m_oldItemIndex = cacheHint->iFrom; - event.m_itemIndex = cacheHint->iTo; + + // we get some really stupid cache hints like ones for items in + // range 0..0 for an empty control or, after deleting an item, + // for items in invalid range - filter this garbage out + if ( cacheHint->iFrom < cacheHint->iTo ) + { + event.m_oldItemIndex = cacheHint->iFrom; + + long iMax = GetItemCount(); + event.m_itemIndex = cacheHint->iTo < iMax ? cacheHint->iTo + : iMax - 1; + } + else + { + return FALSE; + } } break;