mirror of https://github.com/xzeldon/htop.git
Fix scrolling behavior change caused by 759caf0f
Commit "Make PgDown behavior more usual." 759caf0f8f
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 <explorer09 @ gmail.com>
This commit is contained in:
parent
3cd0339423
commit
3d9868833e
5
Panel.c
5
Panel.c
|
@ -407,12 +407,13 @@ bool Panel_onKey(Panel* this, int key) {
|
||||||
break;
|
break;
|
||||||
case KEY_PPAGE:
|
case KEY_PPAGE:
|
||||||
this->selected -= (this->h - 1);
|
this->selected -= (this->h - 1);
|
||||||
this->scrollV -= (this->h - 1);
|
this->scrollV = MAX(0, this->scrollV - this->h + 1);
|
||||||
this->needsRedraw = true;
|
this->needsRedraw = true;
|
||||||
break;
|
break;
|
||||||
case KEY_NPAGE:
|
case KEY_NPAGE:
|
||||||
this->selected += (this->h - 1);
|
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;
|
this->needsRedraw = true;
|
||||||
break;
|
break;
|
||||||
case KEY_WHEELUP:
|
case KEY_WHEELUP:
|
||||||
|
|
Loading…
Reference in New Issue