From 31764b2a1737f92e1691d2771403ce4bb898fd49 Mon Sep 17 00:00:00 2001 From: Simon Tatham Date: Fri, 29 Dec 2023 18:24:19 +0000 Subject: [PATCH] Clip position at the top of the file. --- src/file.rs | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/file.rs b/src/file.rs index c98ca97..0e58edb 100644 --- a/src/file.rs +++ b/src/file.rs @@ -106,7 +106,7 @@ impl FeedFile { 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"); @@ -118,6 +118,8 @@ impl FeedFile { 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) { @@ -165,9 +167,12 @@ impl FeedFile { 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) { -- 2.30.2