From c1cd8619e0faf0ae8c66ed3bfc1c28ebbf79e459 Mon Sep 17 00:00:00 2001 From: youngspe Date: Tue, 9 Oct 2018 12:50:17 -0600 Subject: [PATCH] Fix #1496: scrolling on touch devices (#8060) * Fix #1496: scrolling on touch devices * correct formatting errors --- src/openrct2-ui/UiContext.cpp | 3 ++- src/openrct2-ui/input/MouseInput.cpp | 11 ++++++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/openrct2-ui/UiContext.cpp b/src/openrct2-ui/UiContext.cpp index ceea87cd9b..ca9267f0de 100644 --- a/src/openrct2-ui/UiContext.cpp +++ b/src/openrct2-ui/UiContext.cpp @@ -302,7 +302,6 @@ public: _cursorState.middle &= ~CURSOR_CHANGED; _cursorState.right &= ~CURSOR_CHANGED; _cursorState.old = 0; - _cursorState.touch = false; SDL_Event e; while (SDL_PollEvent(&e)) @@ -401,6 +400,7 @@ public: _cursorState.old = 2; break; } + _cursorState.touch = false; break; } case SDL_MOUSEBUTTONUP: @@ -427,6 +427,7 @@ public: _cursorState.old = 4; break; } + _cursorState.touch = false; break; } // Apple sends touchscreen events for trackpads, so ignore these events on macOS diff --git a/src/openrct2-ui/input/MouseInput.cpp b/src/openrct2-ui/input/MouseInput.cpp index 25663c5a2c..ba47847ee1 100644 --- a/src/openrct2-ui/input/MouseInput.cpp +++ b/src/openrct2-ui/input/MouseInput.cpp @@ -537,6 +537,7 @@ static void input_viewport_drag_continue() rct_viewport* viewport; context_get_cursor_position(&newDragX, &newDragY); + const CursorState* cursorState = context_get_cursor_state(); dx = newDragX - gInputDragLastX; dy = newDragY - gInputDragLastY; @@ -582,7 +583,15 @@ static void input_viewport_drag_continue() } } - context_set_cursor_position(gInputDragLastX, gInputDragLastY); + if (cursorState->touch) + { + gInputDragLastX = newDragX; + gInputDragLastY = newDragY; + } + else + { + context_set_cursor_position(gInputDragLastX, gInputDragLastY); + } } static void input_viewport_drag_end()