diff --git "a/C:\\Users\\user\\Downloads\\SDL2-2.0.3\\SDL2-2.0.3\\src\\video\\windows\\SDL_windowsevents.c" "b/D:\\ProjClient\\SDL2-dev\\SDL2-2.0.3\\src\\video\\windows\\SDL_windowsevents.c" index ec3c052..c10bd25 100644 --- "a/C:\\Users\\user\\Downloads\\SDL2-2.0.3\\SDL2-2.0.3\\src\\video\\windows\\SDL_windowsevents.c" +++ "b/D:\\ProjClient\\SDL2-dev\\SDL2-2.0.3\\src\\video\\windows\\SDL_windowsevents.c" @@ -275,15 +275,15 @@ WIN_CheckAsyncMouseRelease( SDL_WindowData *data ) mouseFlags = SDL_GetMouseState( NULL, NULL ); keyState = GetAsyncKeyState( VK_LBUTTON ); - WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), ( mouseFlags & SDL_BUTTON_LMASK ), data, SDL_BUTTON_LEFT ); + if( !( keyState & 0x8000 ) ) WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), ( mouseFlags & SDL_BUTTON_LMASK ), data, SDL_BUTTON_LEFT ); keyState = GetAsyncKeyState( VK_RBUTTON ); - WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), ( mouseFlags & SDL_BUTTON_RMASK ), data, SDL_BUTTON_RIGHT ); + if( !( keyState & 0x8000 ) ) WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), ( mouseFlags & SDL_BUTTON_RMASK ), data, SDL_BUTTON_RIGHT ); keyState = GetAsyncKeyState( VK_MBUTTON ); - WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), ( mouseFlags & SDL_BUTTON_MMASK ), data, SDL_BUTTON_MIDDLE ); + if( !( keyState & 0x8000 ) ) WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), ( mouseFlags & SDL_BUTTON_MMASK ), data, SDL_BUTTON_MIDDLE ); keyState = GetAsyncKeyState( VK_XBUTTON1 ); - WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), ( mouseFlags & SDL_BUTTON_X1MASK ), data, SDL_BUTTON_X1 ); + if( !( keyState & 0x8000 ) ) WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), ( mouseFlags & SDL_BUTTON_X1MASK ), data, SDL_BUTTON_X1 ); keyState = GetAsyncKeyState( VK_XBUTTON2 ); - WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), ( mouseFlags & SDL_BUTTON_X2MASK ), data, SDL_BUTTON_X2 ); + if( !( keyState & 0x8000 ) ) WIN_CheckWParamMouseButton( ( keyState & 0x8000 ), ( mouseFlags & SDL_BUTTON_X2MASK ), data, SDL_BUTTON_X2 ); data->mouse_button_flags = 0; } @@ -368,6 +368,7 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) case WM_ACTIVATE: { + POINT cursorPos; BOOL minimized; minimized = HIWORD(wParam); @@ -377,6 +378,11 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) SDL_SetKeyboardFocus(data->window); } WIN_UpdateClipCursor(data->window); + + GetCursorPos(&cursorPos); + ScreenToClient(hwnd, &cursorPos); + SDL_SendMouseMotion(data->window, 0, 0, cursorPos.x, cursorPos.y); + WIN_CheckAsyncMouseRelease(data); /*