From 9befd0645da8eea809d2b47455e0f8fa7e6faedd Mon Sep 17 00:00:00 2001 From: Jinzhou Zhang Date: Wed, 8 Apr 2020 15:49:39 +0800 Subject: [PATCH] fix #291: hide scroll info when content fit - Do not show the pager if the content could fit the window. - Show the pager otherwise. --- src/previewer.rs | 32 ++++++++++++++++++++------------ 1 file changed, 20 insertions(+), 12 deletions(-) diff --git a/src/previewer.rs b/src/previewer.rs index 39b33fe9..98cea7e7 100644 --- a/src/previewer.rs +++ b/src/previewer.rs @@ -190,6 +190,12 @@ impl Previewer { } fn act_scroll_down(&mut self, diff: i32) { + let content_len = self.content_lines.lock().len(); + if content_len <= self.height.load(Ordering::SeqCst) { + // don't scroll if content could be filled + return; + } + if diff > 0 { self.vscroll_offset += diff as usize; } else { @@ -261,18 +267,20 @@ impl Draw for Previewer { .unwrap(); printer.print_lines(canvas, &content); - // print the vscroll info - let status = format!("{}/{}", self.vscroll_offset + 1, content.len()); - let col = max(status.len() + 1, self.width.load(Ordering::Relaxed)) - status.len() - 1; - canvas.print_with_attr( - 0, - col, - &status, - Attr { - effect: Effect::REVERSE, - ..Attr::default() - }, - )?; + // print the vscroll info (only if content could not fit in one page) + if content.len() > self.height.load(Ordering::SeqCst) { + let status = format!("{}/{}", self.vscroll_offset + 1, content.len()); + let col = max(status.len() + 1, self.width.load(Ordering::SeqCst)) - status.len() - 1; + canvas.print_with_attr( + 0, + col, + &status, + Attr { + effect: Effect::REVERSE, + ..Attr::default() + }, + )?; + } Ok(()) }