Listview - issue CCSelect sound

Guy L. Albertelli galberte at neo.lrun.com
Sun Sep 29 23:31:01 CDT 2002


This patch depends on the "Add Support for CCSelect sound" patch.

License: X11

Changelog:
Guy Albertelli  <<galberte at neo.lrun.com>>

  dlls/comctl32/listview.c
    - Play the CCSelect sound on LButtonDown.
    - Document other calls that are not done in LButtonDown
      compared to native.
-------------- next part --------------
Index: dlls/comctl32/listview.c
===================================================================
RCS file: /home/wine/wine/dlls/comctl32/listview.c,v
retrieving revision 1.156
diff -u -r1.156 listview.c
--- dlls/comctl32/listview.c	29 Sep 2002 18:34:51 -0000	1.156
+++ dlls/comctl32/listview.c	30 Sep 2002 04:06:18 -0000
@@ -8308,52 +8308,77 @@
   nItem = LISTVIEW_GetItemAtPt(infoPtr, pt);
   if ((nItem >= 0) && (nItem < GETITEMCOUNT(infoPtr)))
   {
-    if (lStyle & LVS_SINGLESEL)
-    {
-      if ((LISTVIEW_GetItemState(infoPtr, nItem, LVIS_SELECTED) & LVIS_SELECTED)
-          && infoPtr->nEditLabelItem == -1)
-          infoPtr->nEditLabelItem = nItem;
-      else
-        LISTVIEW_SetSelection(infoPtr, nItem);
-    }
-    else
-    {
-      if ((wKey & MK_CONTROL) && (wKey & MK_SHIFT))
-      {
-        if (bGroupSelect)
-          LISTVIEW_AddGroupSelection(infoPtr, nItem);
-        else
-          LISTVIEW_AddSelection(infoPtr, nItem);
-      }
-      else if (wKey & MK_CONTROL)
-      {
-        LVITEMW item;
+      /* Play the "Common Control Selected" sound */
+      COMCTL32_PlayCCSelectSound();
 
-	bGroupSelect = (LISTVIEW_GetItemState(infoPtr, nItem, LVIS_SELECTED) == 0);
-	
-	item.state = bGroupSelect ? LVIS_SELECTED : 0;
-        item.stateMask = LVIS_SELECTED;
-	LISTVIEW_SetItemState(infoPtr, nItem, &item);
+      /* FIXME?? native does:
+       *  GetDoubleClickTime()
+       *  SetTimer(hwnd, 2b, time, 0)
+       */
 
-        LISTVIEW_SetItemFocus(infoPtr, nItem);
-        infoPtr->nSelectionMark = nItem;
-      }
-      else  if (wKey & MK_SHIFT)
+      if (lStyle & LVS_SINGLESEL)
       {
-        LISTVIEW_SetGroupSelection(infoPtr, nItem);
+	  if ((LISTVIEW_GetItemState(infoPtr, nItem, LVIS_SELECTED) & LVIS_SELECTED)
+	      && infoPtr->nEditLabelItem == -1)
+	      infoPtr->nEditLabelItem = nItem;
+	  else
+	      LISTVIEW_SetSelection(infoPtr, nItem);
       }
       else
       {
-	BOOL was_selected =
-	    (LISTVIEW_GetItemState(infoPtr, nItem, LVIS_SELECTED) & LVIS_SELECTED);
+	  if ((wKey & MK_CONTROL) && (wKey & MK_SHIFT))
+	  {
+	      if (bGroupSelect)
+		  LISTVIEW_AddGroupSelection(infoPtr, nItem);
+	      else
+		  LISTVIEW_AddSelection(infoPtr, nItem);
+	  }
+	  else if (wKey & MK_CONTROL)
+	  {
+	      LVITEMW item;
+
+	      bGroupSelect = (LISTVIEW_GetItemState(infoPtr, nItem, LVIS_SELECTED) == 0);
+	
+	      item.state = bGroupSelect ? LVIS_SELECTED : 0;
+	      item.stateMask = LVIS_SELECTED;
+	      LISTVIEW_SetItemState(infoPtr, nItem, &item);
+
+	      LISTVIEW_SetItemFocus(infoPtr, nItem);
+	      infoPtr->nSelectionMark = nItem;
+	  }
+	  else  if (wKey & MK_SHIFT)
+	  {
+	      LISTVIEW_SetGroupSelection(infoPtr, nItem);
+	  }
+	  else
+	  {
+	      BOOL was_selected =
+		  (LISTVIEW_GetItemState(infoPtr, nItem, LVIS_SELECTED) & LVIS_SELECTED);
 
-	/* set selection (clears other pre-existing selections) */
-        LISTVIEW_SetSelection(infoPtr, nItem);
+	      /* set selection (clears other pre-existing selections) */
+	      LISTVIEW_SetSelection(infoPtr, nItem);
 
-        if (was_selected && infoPtr->nEditLabelItem == -1)
-          infoPtr->nEditLabelItem = nItem;
+	      if (was_selected && infoPtr->nEditLabelItem == -1)
+		  infoPtr->nEditLabelItem = nItem;
+	  }
       }
-    }
+      /* FIXME?? native does:
+       *  GetFocus()
+       *  NotifyWinEvent(0008005, hwnd, -4, 7)
+       *  NotifyWinEvent(0008006, hwnd, -4, 7)
+       *  GetSystemMetrics(0x44 SM_CXDRAG)
+       *  GetSystemMetrics(0x45 SM_CYDRAG)
+       *  SetRect(&a, 0x1f5, 0x20, 0x1fd, 0x28)
+       *  MapWindowPoints(hwnd, 0, &a, 2)
+       *  SetCapture(hwnd)
+       *  PeekMessage(???, 0, 0, 0, 1)
+       *  CallMsgFilterA(???, 0x00004200)
+       *  ReleaseCapture()
+       *  IsWindow(hwnd)
+       *  SetFocus(hwnd)
+       *  notify NM_CLICK
+       *  return DefWindowProcA()
+       */
   }
   else
   {


More information about the wine-patches mailing list