From f132020d8b9793e82e6f14c83cdad7864ba53c14 Mon Sep 17 00:00:00 2001 From: Doug Lyons Date: Wed, 13 Mar 2024 01:16:02 -0500 Subject: [PATCH] [NTUSER] Fix sticky mouse buttons (#6426) Fix Mouse Buttons Sticking Down causing unexpected window dragging. This is a patch supplied by @I_Kill_Bugs and seems to work well as tested by @julenuri. JIRA issue: CORE-11775 'GIMP 2.6.12: Sticky issue when dragging with the mouse' JIRA issue: CORE-14998 'Google Chrome 40.0.2214.115, when moving window position by dragging at the titlebar, the drag-end is not detected, the window may stick with the mouse pointer' Improves JIRA issue: CORE-18511 Proposed changes Add extra code into nonclient.c procedure DefWndDoSizeMove to drop tracking. If we get a mouse move with the mouse left button down, then break out of testing. --- win32ss/user/ntuser/nonclient.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/win32ss/user/ntuser/nonclient.c b/win32ss/user/ntuser/nonclient.c index a3852066b69..796f5772690 100644 --- a/win32ss/user/ntuser/nonclient.c +++ b/win32ss/user/ntuser/nonclient.c @@ -394,11 +394,13 @@ DefWndDoSizeMove(PWND pwnd, WORD wParam) if (msg.message == WM_KEYDOWN && (msg.wParam == VK_RETURN || msg.wParam == VK_ESCAPE)) break; // Exit on Return or Esc - if (!g_bWindowSnapEnabled && (msg.message == WM_LBUTTONUP)) + if (!g_bWindowSnapEnabled && (msg.message == WM_LBUTTONUP || + (msg.message == WM_MOUSEMOVE && (msg.wParam & MK_LBUTTON) == 0))) { // If no WindowSnapEnabled: Exit on button-up immediately break; } - else if (g_bWindowSnapEnabled && msg.message == WM_LBUTTONUP) + else if (g_bWindowSnapEnabled && (msg.message == WM_LBUTTONUP || + (msg.message == WM_MOUSEMOVE && (msg.wParam & MK_LBUTTON) == 0))) { // If WindowSnapEnabled: Decide whether to snap before exiting DWORD ExStyleTB, StyleTB; BOOL IsTaskBar;