summaryrefslogtreecommitdiffstats
path: root/src/ui
diff options
context:
space:
mode:
authorJeff Zhao <jeff.no.zhao@gmail.com>2021-11-27 18:35:36 -0500
committerJeff Zhao <jeff.no.zhao@gmail.com>2021-11-27 18:35:36 -0500
commit186e9a1f9efcb3832a2e3deff8243d8e9c4de6b2 (patch)
tree0057009a735bde5b169e8ff5bba998564d5bc605 /src/ui
parent14ed540354eab0feb2f65b47a63f46e0ae34203b (diff)
add scrolling support to file preview
Diffstat (limited to 'src/ui')
-rw-r--r--src/ui/views/tui_folder_view.rs4
-rw-r--r--src/ui/widgets/tui_file_preview.rs7
2 files changed, 8 insertions, 3 deletions
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);
}
}