From 3d9868833e21b8d9f5311fd0321a32f7ce69656c Mon Sep 17 00:00:00 2001 From: Explorer09 Date: Sun, 7 Aug 2016 07:49:37 +0800 Subject: Fix scrolling behavior change caused by 759caf0f Commit "Make PgDown behavior more usual." 759caf0f8fa593430adea676fc64612b5197dca8 silently changes the PageDown scrolling behavior that, instead of scrolling one window down until the end of the window touches the end of the list, the window simply repositions itself in a way that the selected item always become the last item in the new window. The commit reverts the behavior, and also fixes sanity conditionals so that the scrollV variable will _never_ become negative or out-of- bound. Fixes issue #532. Also keep the problem #480 addressed. Signed-off-by: Kang-Che Sung --- Panel.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'Panel.c') diff --git a/Panel.c b/Panel.c index 579a82cc..8c4d44fc 100644 --- a/Panel.c +++ b/Panel.c @@ -407,12 +407,13 @@ bool Panel_onKey(Panel* this, int key) { break; case KEY_PPAGE: this->selected -= (this->h - 1); - this->scrollV -= (this->h - 1); + this->scrollV = MAX(0, this->scrollV - this->h + 1); this->needsRedraw = true; break; case KEY_NPAGE: this->selected += (this->h - 1); - this->scrollV = MIN(MAX(0, Vector_size(this->items) - this->h), this->selected - this->h); + this->scrollV = MAX(0, MIN(Vector_size(this->items) - this->h, + this->scrollV + this->h - 1)); this->needsRedraw = true; break; case KEY_WHEELUP: -- cgit v1.2.3