Michael Bicha to Sam SDL-1.2
authorSam Lantinga <slouken@libsdl.org>
Sun, 23 Jan 2011 21:02:02 -0800
branchSDL-1.2
changeset 5077 8c88cae7911e
parent 4928 930614179450
child 5082 4c3c2599559b
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 !
src/video/wincommon/SDL_sysevents.c
--- a/src/video/wincommon/SDL_sysevents.c	Fri Dec 03 16:55:25 2010 -0800
+++ b/src/video/wincommon/SDL_sysevents.c	Sun Jan 23 21:02:02 2011 -0800
@@ -479,8 +479,21 @@
 						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: