From af5e892e35f16e7006ad68d02401c3bc0ae4aa67 Mon Sep 17 00:00:00 2001 From: Sam Lantinga Date: Sun, 23 Jan 2011 21:02:02 -0800 Subject: [PATCH] Michael Bicha to Sam I came across further issues with SDL 1.2.14 on win32 in combination with touch screens. When you touched the screen older SDLs reported SDL_MOUSEMOTION to the touch position SDL_MOUSEBUTTONDOWN at the touch position 1.2.14 reports SDL_MOUSEBUTTONDOWN at the last mouse position before the touch and then a SDL_MOUSEMOTION to the touch position I found that to fix it in the file SDL_sysevents.c i had to put back the following lines from 1.2.12 to get it working correctly again: if ( mouse_relative ) { /* RJR: March 28, 2000 report internal mouse position if in relative mode */ x = 0; y = 0; } else { x = (Sint16)LOWORD(lParam); y = (Sint16)HIWORD(lParam); #ifdef _WIN32_WCE if (SDL_VideoSurface) GapiTransform(this->hidden->userOrientation, this->hidden->hiresFix, &x, &y); #endif } posted = SDL_PrivateMouseButton( state, button, x, y); where there was only posted = SDL_PrivateMouseButton( state, button, 0, 0); in 1.2.14 (appx. line 484) please feel free to put that change into any SDL lib you like in any way you like and thanks for your great work ! --HG-- branch : SDL-1.2 --- src/video/wincommon/SDL_sysevents.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/src/video/wincommon/SDL_sysevents.c b/src/video/wincommon/SDL_sysevents.c index 70ee037ea..b9c1d7dc9 100644 --- a/src/video/wincommon/SDL_sysevents.c +++ b/src/video/wincommon/SDL_sysevents.c @@ -479,8 +479,21 @@ LRESULT CALLBACK WinMessage(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) mouse_pressed = 0; } } + if ( mouse_relative ) { + /* RJR: March 28, 2000 + report internal mouse position if in relative mode */ + x = 0; y = 0; + } else { + x = (Sint16)LOWORD(lParam); + y = (Sint16)HIWORD(lParam); +#ifdef _WIN32_WCE + if (SDL_VideoSurface) + GapiTransform(this->hidden->userOrientation, +this->hidden->hiresFix, &x, &y); +#endif + } posted = SDL_PrivateMouseButton( - state, button, 0, 0); + state, button, x, y); /* * MSDN says: