From d638355955003026be534418fb46c138a398e85e Mon Sep 17 00:00:00 2001 From: Adam Johnson Date: Sat, 3 Nov 2012 01:22:56 -0400 Subject: [PATCH] Track mouse ups/downs for releasing purposes --- .../Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp index 088e8610..bf7fa4ef 100644 --- a/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp +++ b/MOULOpenSourceClientPlugin/Plasma20/Sources/Plasma/Apps/plClient/winmain.cpp @@ -432,7 +432,7 @@ void DebugMsgF(const char* format, ...); LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) { static bool gDragging = false; - static UInt32 keyState=0; + static UInt8 mouse_down = 0; // Handle messages switch (message) { @@ -442,8 +442,9 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) case WM_MBUTTONDBLCLK: case WM_MBUTTONDOWN: case WM_RBUTTONDBLCLK: - // Ensure we don't leave the client area during this action - SetCapture(hWnd); + // Ensure we don't leave the client area during clicks + if (!(mouse_down++)) + SetCapture(hWnd); // fall through to old case case WM_KEYDOWN: // If they did anything but move the mouse, quit any intro movie playing. @@ -460,7 +461,8 @@ LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) case WM_RBUTTONUP: case WM_MBUTTONUP: // Stop hogging the cursor - ReleaseCapture(); + if (!(--mouse_down)) + ReleaseCapture(); // fall through to input processing case WM_MOUSEWHEEL: case WM_KEYUP: