[NTUSER] Fix sticky mouse buttons (#6426)
authorDoug Lyons <douglyons@douglyons.com>
Wed, 13 Mar 2024 06:16:02 +0000 (01:16 -0500)
committerGitHub <noreply@github.com>
Wed, 13 Mar 2024 06:16:02 +0000 (07:16 +0100)
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

index a385206..796f577 100644 (file)
@@ -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;