self.rendered.get(&index).expect("We just made sure this was present")
}
- fn ensure_enough_rendered(&mut self) {
+ fn ensure_enough_rendered(&mut self) -> usize {
let (w, h) = self.last_size.expect(
"ensure_enough_rendered before resize");
item -= 1;
lines_rendered += self.ensure_item_rendered(item, w).len();
}
+
+ h - min(h, lines_rendered + 1)
}
fn refine_pos(&mut self, w: usize) -> (isize, usize) {
line = self.ensure_item_rendered(item, w).len();
}
}
- // FIXME: clip position at top of file
self.pos = FilePosition::Fine(item, line);
- self.ensure_enough_rendered();
+ let overshoot = self.ensure_enough_rendered();
+ // Clip position at top of file
+ if overshoot > 0 {
+ self.move_down(overshoot);
+ }
}
fn move_down(&mut self, distance: usize) {