From 186e9a1f9efcb3832a2e3deff8243d8e9c4de6b2 Mon Sep 17 00:00:00 2001 From: Jeff Zhao Date: Sat, 27 Nov 2021 18:35:36 -0500 Subject: add scrolling support to file preview --- src/ui/views/tui_folder_view.rs | 4 ++-- src/ui/widgets/tui_file_preview.rs | 7 ++++++- 2 files changed, 8 insertions(+), 3 deletions(-) (limited to 'src/ui') diff --git a/src/ui/views/tui_folder_view.rs b/src/ui/views/tui_folder_view.rs index 398c3d8..944e1f5 100644 --- a/src/ui/views/tui_folder_view.rs +++ b/src/ui/views/tui_folder_view.rs @@ -48,7 +48,7 @@ impl<'a> Widget for TuiFolderView<'a> { Some(_) => (true, &display_options.default_layout), None => match curr_entry { None => (false, &display_options.no_preview_layout), - Some(e) => match preview_context.get_preview(e.file_path()) { + Some(e) => match preview_context.get_preview_ref(e.file_path()) { Some(Some(p)) if p.status.code() != Some(1) => { (true, &display_options.default_layout) } @@ -158,7 +158,7 @@ impl<'a> Widget for TuiFolderView<'a> { if let Some(list) = child_list.as_ref() { TuiDirList::new(list).render(layout_rect[2], buf); } else if let Some(entry) = curr_entry { - if let Some(Some(preview)) = preview_context.get_preview(entry.file_path()) { + if let Some(Some(preview)) = preview_context.get_preview_ref(entry.file_path()) { match preview.status.code() { Some(1) | None => {} _ => { diff --git a/src/ui/widgets/tui_file_preview.rs b/src/ui/widgets/tui_file_preview.rs index 0a784cc..cc9e7bd 100644 --- a/src/ui/widgets/tui_file_preview.rs +++ b/src/ui/widgets/tui_file_preview.rs @@ -21,7 +21,12 @@ impl<'a> TuiFilePreview<'a> { impl<'a> Widget for TuiFilePreview<'a> { fn render(self, area: Rect, buf: &mut Buffer) { let text: Text = ansi_to_text(self.preview.output.as_str().as_bytes().to_vec()).unwrap(); - for (y, line) in (area.y..area.y + area.height).zip(text.lines) { + for (line, y) in text + .lines + .iter() + .skip(self.preview.index) + .zip(area.y..area.y + area.height) + { buf.set_spans(area.x, y, &line, area.width); } } -- cgit v1.2.3