From a4b8aafb36b825983b17d191a3b140a9b44bee47 Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Tue, 23 Feb 2021 10:44:50 +0100 Subject: [PATCH] Slide improved (keep the energy for multipages scroll) --- .../thirdparty/libopenui/src/mainwindow.cpp | 18 ++++++++++++------ radio/src/thirdparty/libopenui/src/window.cpp | 2 +- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/radio/src/thirdparty/libopenui/src/mainwindow.cpp b/radio/src/thirdparty/libopenui/src/mainwindow.cpp index 259c3306b..03c761bd2 100644 --- a/radio/src/thirdparty/libopenui/src/mainwindow.cpp +++ b/radio/src/thirdparty/libopenui/src/mainwindow.cpp @@ -64,14 +64,20 @@ void MainWindow::checkEvents() } } else if (touchState.event == TE_SLIDE_END && slidingWindow) { - if (abs(touchState.lastDeltaX) >= 5 || abs(touchState.lastDeltaY) >= 5) { - onTouchSlide(touchState.x, touchState.y, touchState.startX, touchState.startY, touchState.lastDeltaX, touchState.lastDeltaY); - touchState.lastDeltaX = (touchState.lastDeltaX * 3) >> 2; - touchState.lastDeltaY = (touchState.lastDeltaY * 3) >> 2; - } - else { + if (touchState.lastDeltaX > SLIDE_SPEED_REDUCTION) + touchState.lastDeltaX -= SLIDE_SPEED_REDUCTION; + else if (touchState.lastDeltaX < -SLIDE_SPEED_REDUCTION) + touchState.lastDeltaX += SLIDE_SPEED_REDUCTION; + else touchState.lastDeltaX = 0; + if (touchState.lastDeltaY > SLIDE_SPEED_REDUCTION) + touchState.lastDeltaY -= SLIDE_SPEED_REDUCTION; + else if (touchState.lastDeltaY < -SLIDE_SPEED_REDUCTION) + touchState.lastDeltaY += SLIDE_SPEED_REDUCTION; + else touchState.lastDeltaY = 0; + if (touchState.lastDeltaX || touchState.lastDeltaY) { + onTouchSlide(touchState.x, touchState.y, touchState.startX, touchState.startY, touchState.lastDeltaX, touchState.lastDeltaY); } } #endif diff --git a/radio/src/thirdparty/libopenui/src/window.cpp b/radio/src/thirdparty/libopenui/src/window.cpp index a382f1e84..7eff84a83 100644 --- a/radio/src/thirdparty/libopenui/src/window.cpp +++ b/radio/src/thirdparty/libopenui/src/window.cpp @@ -346,7 +346,7 @@ void Window::checkEvents() } #if defined(HARDWARE_TOUCH) - if (touchState.event != TE_SLIDE) { + if (touchState.event != TE_SLIDE && touchState.lastDeltaX == 0 && touchState.lastDeltaY == 0) { if (pageWidth) { coord_t relativeScrollPosition = scrollPositionX % pageWidth; if (relativeScrollPosition) {