Fixed bug 2726 - WinRT touches not setting 'which' field in virtual mouse events
This patch makes sure that any SDL_MOUSEBUTTONDOWN, SDL_MOUSEBUTTONUP, and
SDL_MOUSEMOTION events, as triggered by a touch event in a WinRT app, set the
event's 'which' field to SDL_TOUCH_MOUSEID. Previously, this was getting set
to the same value as events from a real mouse, '0'.
Thanks to Diego for providing information on this bug, and to Tamas Hamor for
sending over a patch!
--- a/src/video/winrt/SDL_winrtpointerinput.cpp Sat Nov 22 22:20:40 2014 +0100
+++ b/src/video/winrt/SDL_winrtpointerinput.cpp Sat Nov 22 21:13:46 2014 -0500
@@ -233,8 +233,8 @@
if (!WINRT_LeftFingerDown) {
if (button) {
- SDL_SendMouseMotion(window, 0, 0, (int)windowPoint.X, (int)windowPoint.Y);
- SDL_SendMouseButton(window, 0, SDL_PRESSED, button);
+ SDL_SendMouseMotion(window, SDL_TOUCH_MOUSEID, 0, (int)windowPoint.X, (int)windowPoint.Y);
+ SDL_SendMouseButton(window, SDL_TOUCH_MOUSEID, SDL_PRESSED, button);
}
WINRT_LeftFingerDown = pointerPoint->PointerId;
@@ -264,7 +264,7 @@
SDL_SendMouseMotion(window, 0, 0, (int)windowPoint.X, (int)windowPoint.Y);
} else {
if (pointerPoint->PointerId == WINRT_LeftFingerDown) {
- SDL_SendMouseMotion(window, 0, 0, (int)windowPoint.X, (int)windowPoint.Y);
+ SDL_SendMouseMotion(window, SDL_TOUCH_MOUSEID, 0, (int)windowPoint.X, (int)windowPoint.Y);
}
SDL_SendTouchMotion(
@@ -291,7 +291,7 @@
if (WINRT_LeftFingerDown == pointerPoint->PointerId) {
if (button) {
- SDL_SendMouseButton(window, 0, SDL_RELEASED, button);
+ SDL_SendMouseButton(window, SDL_TOUCH_MOUSEID, SDL_RELEASED, button);
}
WINRT_LeftFingerDown = 0;
}