Several screens in which I can navigate between them through GESTURE_UP / _DOWN
Using widget ‘Roller’ (which uses up-down gestures to roll)
What have you tried so far?
Setup the screens and (at least on one of them) use a widget of type ‘Roller’
Screenshot or video
Others
1.5.0
W10
SC01 PLUS
As stated in the topic, when using the ‘Roller’ it switches between screens. Switching screens through gesture up/down is expected behavior - however this should not apply when using the roller. I could go with gesture left/right for switching screens - but facing the same problem with sliders.
The Roller widget takes away the touch from the screen since the Roller has priority. If you switch the screen with a gesture trigger, you won’t be able to use the roller in the area where you perform the screen switching gesture.
I’m sure, I did not describe the problem in a imaginable way. I’ll try again:
I have a screen ‘screenA’ with Up/Down gesture to switch to another screen ‘screenB’. On ‘screenA’ I have a Roller - which of course also uses a sort of up/down-gesture to roll between the different values.
If I move my finger slowly on the roller up an down - the value of the roller changes as expected. The problem is, when I move my finger faster (still on that roller!) it will suddenly switch to ‘screenB’. I really tried not to leave the active area of the roller - but regardless, at a certain speed it jumps to the other screen.
This has always been tricky in LVGL. In LVGL-8.3.11 it doesn’t matter if you’re on a roller/slider/whatever, when the fingers move long enough in a given time it’s taken as a swipe-gesture. It can be seen in the SmartWatch demo for example, and you can also see that buttons get ‘activated’ when the swipe goes over them (but fortunately at least they don’t trigger clicks).
In LVGL-9.1 it changed and they wanted to suppress the gesture when buttons/anything is in the swipe-path. But it made project like SmartWatch demo unusable, because there’s a big text in the middle of the screen and buttons/sliders around which inactivate the swipe-gesture when they get into its path. And I could see another flaw in the swipe IIRC where the swipe got zeroed due to an inadequate input-event handling. We made a temporary fix for this in LVGL (rare cases where we need to modify LVGL itself) which can be enabled/disabled by the define ‘LV_SQUARELINE_MOD__SWIPE’ when it’s set to 1. It’s set to 1 by default in lv_conf.h of our board-templates to keep consistency between past project and current LVGL behaviour, but you can disable it by setting it to 0 or removing / commenting it out. Hopefully that gets the behaviour you want, bat then again, I don’t think it’s well executed in LVGL 8.3 or 9.1 overall.