Scroll to 'top/bottom' by only 10 at a time

Prevents a nasty device lockup when scrolling infinite lists
custom
jacqueline 10 months ago
parent b02d13f5a5
commit 194f0e6b59
  1. 4
      src/tangara/input/input_hook_actions.cpp
  2. 8
      src/tangara/input/input_touch_wheel.cpp

@ -34,14 +34,14 @@ auto scrollDown() -> HookCallback {
auto scrollToTop() -> HookCallback { auto scrollToTop() -> HookCallback {
return HookCallback{.name = "scroll_to_top", .fn = [&](lv_indev_data_t* d) { return HookCallback{.name = "scroll_to_top", .fn = [&](lv_indev_data_t* d) {
d->enc_diff = INT16_MIN; d->enc_diff = -10;
}}; }};
} }
auto scrollToBottom() -> HookCallback { auto scrollToBottom() -> HookCallback {
return HookCallback{ return HookCallback{
.name = "scroll_to_bottom", .name = "scroll_to_bottom",
.fn = [&](lv_indev_data_t* d) { d->enc_diff = INT16_MAX; }}; .fn = [&](lv_indev_data_t* d) { d->enc_diff = 10; }};
} }
auto goBack() -> HookCallback { auto goBack() -> HookCallback {

@ -40,9 +40,13 @@ TouchWheel::TouchWheel(drivers::NvsStorage& nvs, drivers::TouchWheel& wheel)
return true; return true;
}), }),
centre_("centre", actions::select(), {}, {}, {}), centre_("centre", actions::select(), {}, {}, {}),
up_("up", {}, {}, actions::scrollToTop(), {}), up_("up", {}, {}, actions::scrollToTop(), actions::scrollToTop()),
right_("right", {}), right_("right", {}),
down_("down", {}, {}, actions::scrollToBottom(), {}), down_("down",
{},
{},
actions::scrollToBottom(),
actions::scrollToBottom()),
left_("left", {}, {}, actions::goBack(), {}), left_("left", {}, {}, actions::goBack(), {}),
is_scrolling_(false), is_scrolling_(false),
threshold_(calculateThreshold(nvs.ScrollSensitivity())), threshold_(calculateThreshold(nvs.ScrollSensitivity())),

Loading…
Cancel
Save