From a1a9fd50c69647cc4e339debec7c5f42a4a2d8a8 Mon Sep 17 00:00:00 2001 From: Sylvain Becker Date: Sat, 6 Apr 2019 21:43:16 +0200 Subject: [PATCH] Bug 4581: move tracking appart so it doesn't require the window to have focus --- src/events/SDL_touch.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/events/SDL_touch.c b/src/events/SDL_touch.c index 3274cc521eaeb..2c5375fd82bb6 100644 --- a/src/events/SDL_touch.c +++ b/src/events/SDL_touch.c @@ -257,19 +257,26 @@ SDL_SendTouch(SDL_TouchID id, SDL_FingerID fingerid, if (finger_touching == SDL_FALSE) { int pos_x = (int)(x * (float)window->w); int pos_y = (int)(y * (float)window->h); - finger_touching = SDL_TRUE; - track_touchid = id; - track_fingerid = fingerid; SDL_SendMouseMotion(window, SDL_TOUCH_MOUSEID, 0, pos_x, pos_y); SDL_SendMouseButton(window, SDL_TOUCH_MOUSEID, SDL_PRESSED, SDL_BUTTON_LEFT); } } else { if (finger_touching == SDL_TRUE && track_touchid == id && track_fingerid == fingerid) { SDL_SendMouseButton(window, SDL_TOUCH_MOUSEID, SDL_RELEASED, SDL_BUTTON_LEFT); - finger_touching = SDL_FALSE; } } } + if (down) { + if (finger_touching == SDL_FALSE) { + finger_touching = SDL_TRUE; + track_touchid = id; + track_fingerid = fingerid; + } + } else { + if (finger_touching == SDL_TRUE && track_touchid == id && track_fingerid == fingerid) { + finger_touching = SDL_FALSE; + } + } } } }