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: