]> git.saurik.com Git - wxWidgets.git/commitdiff
Don't fill wxListEvent::m_item when using virtual list control in wxMSW.
authorVadim Zeitlin <vadim@wxwidgets.org>
Thu, 5 Jan 2012 12:51:40 +0000 (12:51 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Thu, 5 Jan 2012 12:51:40 +0000 (12:51 +0000)
When using virtual list control the main program already has the items data so
it's completely useless to call GetItem() when preparing an event for it. It
is also inefficient to call GetItem() for potentially many items.

For both of these reasons the generic version already didn't fill the item
contents for virtual list controls events. Now modify wxMSW to not do it
neither.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@70271 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/msw/listctrl.cpp

index 5bc5c08c56c9f9deb66ff0fb4f2290d16ccb398b..6c29d0ea064b76b5221fd44bf5f4207217aff290 100644 (file)
@@ -2528,7 +2528,11 @@ bool wxListCtrl::MSWOnNotify(int idCtrl, WXLPARAM lParam, WXLPARAM *result)
 
     // fill in the item before passing it to the event handler if we do have a
     // valid item index and haven't filled it yet (e.g. for LVN_ITEMCHANGED)
-    if ( event.m_itemIndex != -1 && !event.m_item.GetMask() )
+    // and we're not using a virtual control as in this case the program
+    // already has the data anyhow and we don't want to call GetItem() for
+    // potentially many items
+    if ( event.m_itemIndex != -1 && !event.m_item.GetMask()
+            && !IsVirtual() )
     {
         wxListItem& item = event.m_item;