We must render the actual item that our current position points at, as
well as the ones before that. I had my loop backwards.
let mut item = item;
let mut lines_rendered = line;
- while item > self.contents.first_index() && lines_rendered < h {
- item -= 1;
+ loop {
lines_rendered += self.ensure_item_rendered(item, w).len();
+ if lines_rendered >= h {
+ break;
+ }
+ item -= 1;
+ if item < self.contents.first_index() {
+ break;
+ }
}
if lines_rendered + 1 <= h {