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!
parent
9c398852e6
commit
5575948b37
|
@ -233,8 +233,8 @@ void WINRT_ProcessPointerPressedEvent(SDL_Window *window, Windows::UI::Input::Po
|
||||||
|
|
||||||
if (!WINRT_LeftFingerDown) {
|
if (!WINRT_LeftFingerDown) {
|
||||||
if (button) {
|
if (button) {
|
||||||
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_SendMouseButton(window, 0, SDL_PRESSED, button);
|
SDL_SendMouseButton(window, SDL_TOUCH_MOUSEID, SDL_PRESSED, button);
|
||||||
}
|
}
|
||||||
|
|
||||||
WINRT_LeftFingerDown = pointerPoint->PointerId;
|
WINRT_LeftFingerDown = pointerPoint->PointerId;
|
||||||
|
@ -264,7 +264,7 @@ WINRT_ProcessPointerMovedEvent(SDL_Window *window, Windows::UI::Input::PointerPo
|
||||||
SDL_SendMouseMotion(window, 0, 0, (int)windowPoint.X, (int)windowPoint.Y);
|
SDL_SendMouseMotion(window, 0, 0, (int)windowPoint.X, (int)windowPoint.Y);
|
||||||
} else {
|
} else {
|
||||||
if (pointerPoint->PointerId == WINRT_LeftFingerDown) {
|
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(
|
SDL_SendTouchMotion(
|
||||||
|
@ -291,7 +291,7 @@ void WINRT_ProcessPointerReleasedEvent(SDL_Window *window, Windows::UI::Input::P
|
||||||
|
|
||||||
if (WINRT_LeftFingerDown == pointerPoint->PointerId) {
|
if (WINRT_LeftFingerDown == pointerPoint->PointerId) {
|
||||||
if (button) {
|
if (button) {
|
||||||
SDL_SendMouseButton(window, 0, SDL_RELEASED, button);
|
SDL_SendMouseButton(window, SDL_TOUCH_MOUSEID, SDL_RELEASED, button);
|
||||||
}
|
}
|
||||||
WINRT_LeftFingerDown = 0;
|
WINRT_LeftFingerDown = 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue