Listview R4

Dimitrie O. Paun dpaun at rogers.com
Wed Oct 16 07:47:21 CDT 2002


ChangeLog
  Compute only the old state that we're gonna look at.

--- dlls/comctl32/listview.c.R3	Wed Oct 16 01:09:47 2002
+++ dlls/comctl32/listview.c	Wed Oct 16 08:34:41 2002
@@ -2782,9 +2782,9 @@
     /* a virtual listview stores only the state for the main item */
     if (lpLVItem->iSubItem || !(lpLVItem->mask & LVIF_STATE)) return FALSE;
 
-    oldState = LISTVIEW_GetItemState(infoPtr, lpLVItem->iItem, LVIS_FOCUSED | LVIS_SELECTED);
-    TRACE("oldState=%x, newState=%x, uCallbackMask=%x\n", 
-	  oldState, lpLVItem->state, infoPtr->uCallbackMask);
+    oldState = (LVIS_FOCUSED | LVIS_SELECTED) & ~infoPtr->uCallbackMask;
+    if (oldState) oldState = LISTVIEW_GetItemState(infoPtr, lpLVItem->iItem, oldState);
+    TRACE("oldState=%x, newState=%x\n", oldState, lpLVItem->state);
 
     /* we're done if we don't need to change anything we handle */
     if ( !((oldState ^ lpLVItem->state) & lpLVItem->stateMask &
@@ -2860,9 +2860,10 @@
     if (!lpItem) return FALSE;
 
     /* we need to handle the focus, and selection differently */
-    oldState = LISTVIEW_GetItemState(infoPtr, lpLVItem->iItem, LVIS_FOCUSED | LVIS_SELECTED);
+    oldState = (LVIS_FOCUSED | LVIS_SELECTED) & ~infoPtr->uCallbackMask;
+    if (oldState) oldState = LISTVIEW_GetItemState(infoPtr, lpLVItem->iItem, oldState);
 
-    TRACE("lpItem->state=0x%x\n", lpItem->state);
+    TRACE("oldState=0x%x, state=0x%x\n", oldState, lpItem->state);
     /* determine what fields will change */    
     if ((lpLVItem->mask & LVIF_STATE) && ((oldState ^ lpLVItem->state) & lpLVItem->stateMask & ~infoPtr->uCallbackMask))
 	uChanged |= LVIF_STATE;




More information about the wine-patches mailing list