|
@@ -524,9 +524,14 @@ WIN_WindowProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
|
|
} else if (isCapture) {
|
|
|
/* we check for where Windows thinks the system cursor lives in this case, so we don't really lose mouse accel, etc. */
|
|
|
POINT pt;
|
|
|
+ RECT hwndRect;
|
|
|
GetCursorPos(&pt);
|
|
|
- if (WindowFromPoint(pt) != hwnd) { /* if in the window, WM_MOUSEMOVE, etc, will cover it. */
|
|
|
- ScreenToClient(hwnd, &pt);
|
|
|
+ HWND currentHnd = WindowFromPoint( pt );
|
|
|
+ ScreenToClient( hwnd, &pt );
|
|
|
+ GetClientRect( hwnd, &hwndRect );
|
|
|
+
|
|
|
+ /* if in the window, WM_MOUSEMOVE, etc, will cover it. */
|
|
|
+ if( currentHnd != hwnd || pt.x < 0 || pt.y < 0 || pt.x > hwndRect.right || pt.y > hwndRect.right ) {
|
|
|
SDL_SendMouseMotion(data->window, 0, 0, (int) pt.x, (int) pt.y);
|
|
|
SDL_SendMouseButton(data->window, 0, GetAsyncKeyState(VK_LBUTTON) & 0x8000 ? SDL_PRESSED : SDL_RELEASED, SDL_BUTTON_LEFT);
|
|
|
SDL_SendMouseButton(data->window, 0, GetAsyncKeyState(VK_RBUTTON) & 0x8000 ? SDL_PRESSED : SDL_RELEASED, SDL_BUTTON_RIGHT);
|