From 2508191864a3ba3e6a86f9a6d1459f424614669d Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Mon, 24 Feb 2020 17:25:37 +0100 Subject: [PATCH] Touch support reworked --- radio/src/simu.cpp | 12 +++++++----- radio/src/targets/simu/simpgmspace.cpp | 9 +++++++++ radio/src/thirdparty/libopenui | 2 +- radio/src/touch.h | 15 +++++++-------- 4 files changed, 24 insertions(+), 14 deletions(-) diff --git a/radio/src/simu.cpp b/radio/src/simu.cpp index b662ea4ee..26db35d53 100644 --- a/radio/src/simu.cpp +++ b/radio/src/simu.cpp @@ -261,8 +261,8 @@ long OpenTxSim::onMouseDown(FXObject *, FXSelector, void * v) #if defined(HARDWARE_TOUCH) touchState.event = TE_DOWN; - touchState.startX = touchState.lastX = touchState.x = evt->win_x; - touchState.startY = touchState.lastY = touchState.y = evt->win_y; + touchState.startX = touchState.x = evt->win_x; + touchState.startY = touchState.y = evt->win_y; #endif return 0; @@ -278,8 +278,8 @@ long OpenTxSim::onMouseUp(FXObject*,FXSelector,void*v) #if defined(HARDWARE_TOUCH) if (touchState.event == TE_DOWN) { touchState.event = TE_UP; - touchState.x = evt->win_x; - touchState.y = evt->win_y; + touchState.x = touchState.startX; + touchState.y = touchState.startY; } else { touchState.event = TE_NONE; @@ -298,7 +298,9 @@ long OpenTxSim::onMouseMove(FXObject*,FXSelector,void*v) TRACE_WINDOWS("[Mouse Move] %d %d", evt->win_x, evt->win_y); #if defined(HARDWARE_TOUCH) - if (touchState.event == TE_SLIDE || abs(evt->win_x - touchState.x) > 5 || abs(evt->win_y - touchState.y) > 5) { + touchState.deltaX += evt->win_x - touchState.x; + touchState.deltaY += evt->win_y - touchState.y; + if (touchState.event == TE_SLIDE || abs(touchState.deltaX) >= SLIDE_RANGE || abs(touchState.deltaY) >= SLIDE_RANGE) { touchState.event = TE_SLIDE; touchState.x = evt->win_x; touchState.y = evt->win_y; diff --git a/radio/src/targets/simu/simpgmspace.cpp b/radio/src/targets/simu/simpgmspace.cpp index d93e40379..c10b0c479 100644 --- a/radio/src/targets/simu/simpgmspace.cpp +++ b/radio/src/targets/simu/simpgmspace.cpp @@ -812,3 +812,12 @@ void check_intmodule_heartbeat() { } #endif + +bool touchPanelEventOccured() +{ + return false; +} + +void touchPanelRead() +{ +} diff --git a/radio/src/thirdparty/libopenui b/radio/src/thirdparty/libopenui index 50e9396fc..92929584e 160000 --- a/radio/src/thirdparty/libopenui +++ b/radio/src/thirdparty/libopenui @@ -1 +1 @@ -Subproject commit 50e9396fc06e8cdb3bd80b9d9fc701adc3cc9c05 +Subproject commit 92929584ee5ebd5a180130aee2c1f4b1a0688710 diff --git a/radio/src/touch.h b/radio/src/touch.h index 49698c54f..76f912bd6 100644 --- a/radio/src/touch.h +++ b/radio/src/touch.h @@ -32,14 +32,13 @@ enum TouchEvent struct TouchState { - unsigned char event; - short x; - short y; - short startX; - short startY; - short lastX; - short lastY; - uint32_t time; + unsigned char event; + short x; + short y; + short startX; + short startY; + short deltaX; + short deltaY; }; constexpr uint8_t SLIDE_RANGE = 6;