From 753cd1e9e1d7cbb02f6096b32f0c430d98c53c18 Mon Sep 17 00:00:00 2001 From: Nikita Zlobin Date: Thu, 6 Jun 2024 21:25:20 +0500 Subject: [PATCH] Place continuous scroll center in middle column Signed-off-by: Dave Davenport --- source/widgets/listview.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/source/widgets/listview.c b/source/widgets/listview.c index 2e333cb6a..224396d38 100644 --- a/source/widgets/listview.c +++ b/source/widgets/listview.c @@ -294,15 +294,17 @@ static unsigned int scroll_per_page(listview *lv) { } static unsigned int scroll_continious(listview *lv) { - unsigned int middle = (lv->max_rows - ((lv->max_rows & 1) == 0)) / 2; + unsigned int vmid = (lv->max_rows - 1) / 2; + unsigned int hmid = (lv->menu_columns - 1) / 2; + unsigned int middle = (lv->max_rows * hmid) + vmid; unsigned int offset = 0; if (lv->selected > middle) { - if (lv->selected < (lv->req_elements - (lv->max_rows - middle))) { + if (lv->selected < (lv->req_elements - (lv->max_elements - middle))) { offset = lv->selected - middle; } // Don't go below zero. - else if (lv->req_elements > lv->max_rows) { - offset = lv->req_elements - lv->max_rows; + else if (lv->req_elements > lv->max_elements) { + offset = lv->req_elements - lv->max_elements; } } if (offset != lv->cur_page) {