Toolbar ReleaseCapture changes, take 2

Duane Clark dclark at akamail.com
Thu Mar 14 11:55:01 CST 2002


Duane Clark wrote:
> I just noticed that the patch I submitted is against an old version of 
> CVS, even though I did the "cvs diff" today (3/13)...

Apparently, I don't understand how to use CVS yet. Here is the patch 
against the current CVS. There are no changes other than that.

Log message:
	TOOLBAR_LButtonUp should work even if ReleaseCapture was
	already called.





-------------- next part --------------
Index: dlls/comctl32/toolbar.c
===================================================================
RCS file: /home/wine/wine/dlls/comctl32/toolbar.c,v
retrieving revision 1.107
diff -u -r1.107 toolbar.c
--- dlls/comctl32/toolbar.c	11 Mar 2002 01:11:19 -0000	1.107
+++ dlls/comctl32/toolbar.c	14 Mar 2002 17:13:56 -0000
@@ -4482,18 +4482,16 @@
     if((infoPtr->nHotItem >= 0) && (nHit != -1))
         infoPtr->buttons[infoPtr->nHotItem].bHot = TRUE;
 
-    if ((infoPtr->bCaptured) && (infoPtr->nButtonDown >= 0)) {
 	btnPtr = &infoPtr->buttons[infoPtr->nButtonDown];
 	btnPtr->fsState &= ~TBSTATE_PRESSED;
 
-	if (nHit == infoPtr->nButtonDown) {
-	    if (btnPtr->fsStyle & TBSTYLE_CHECK) {
+	if (btnPtr->fsStyle & TBSTYLE_CHECK) {
 		if (btnPtr->fsStyle & TBSTYLE_GROUP) {
 		    nOldIndex = TOOLBAR_GetCheckedGroupButtonIndex (infoPtr,
-			infoPtr->nButtonDown);
-		    if (nOldIndex == infoPtr->nButtonDown)
+			nHit);
+		    if (nOldIndex == nHit)
 			bSendMessage = FALSE;
-		    if ((nOldIndex != infoPtr->nButtonDown) && 
+		    if ((nOldIndex != nHit) && 
 			(nOldIndex != -1))
 			infoPtr->buttons[nOldIndex].fsState &= ~TBSTATE_CHECKED;
 		    btnPtr->fsState |= TBSTATE_CHECKED;
@@ -4504,10 +4502,7 @@
 		    else
 			btnPtr->fsState |= TBSTATE_CHECKED;
 		}
-	    }
 	}
-	else
-	    bSendMessage = FALSE;
 
 	if (nOldIndex != -1)
         {
@@ -4520,7 +4515,8 @@
 	 * that resets bCaptured and btn TBSTATE_PRESSED flags,
 	 * and obliterates nButtonDown and nOldHit (see TOOLBAR_CaptureChanged) 
 	 */
-	ReleaseCapture ();
+	if ((infoPtr->bCaptured) && (infoPtr->nButtonDown >= 0))
+	    ReleaseCapture ();
 
 	/* Issue NM_RELEASEDCAPTURE to parent to let him know it is released */
 	TOOLBAR_SendNotify ((NMHDR *) &hdr, infoPtr,
@@ -4541,9 +4537,8 @@
 	TOOLBAR_SendNotify ((NMHDR *) &nmtb, infoPtr,
 			TBN_ENDDRAG);
 
-	if (bSendMessage)
-	    SendMessageA (infoPtr->hwndNotify, WM_COMMAND,
-			  MAKEWPARAM(btnPtr->idCommand, 0), (LPARAM)hwnd);
+	SendMessageA (infoPtr->hwndNotify, WM_COMMAND,
+	  MAKEWPARAM(infoPtr->buttons[nHit].idCommand, 0), (LPARAM)hwnd);
 
 	/* !!! Undocumented - toolbar at 4.71 level and above sends
 	 * either NMRCLICK or NM_CLICK with the NMMOUSE structure.
@@ -4553,8 +4548,6 @@
 	nmmouse.dwItemData = btnPtr->dwData;
 	TOOLBAR_SendNotify ((NMHDR *) &nmmouse, infoPtr,
 			NM_CLICK);
-    }
-
     return 0;
 }
 


More information about the wine-patches mailing list