diff options
author | Jeff Zhao <jeff.no.zhao@gmail.com> | 2021-09-26 10:24:35 -0400 |
---|---|---|
committer | Jeff Zhao <jeff.no.zhao@gmail.com> | 2021-09-26 10:24:35 -0400 |
commit | 4a05a399fab43aba7c1872f9950e0e9663fdae0d (patch) | |
tree | ac3c1cc71c8ce0d2761b856afaa8dc63e4ed45bc /src/preview/preview_default.rs | |
parent | b4a62fcbddb870d11dcf72964c048ee6e195be40 (diff) |
file previews no longer continuously spawn threads for existing previews
- file previews also honor max_preview_size option
- removed unnecessary return from cursor_move
- parent_cursor_move now works properly with preview loading
- reloading now retain directory sizes
Diffstat (limited to 'src/preview/preview_default.rs')
-rw-r--r-- | src/preview/preview_default.rs | 44 |
1 files changed, 31 insertions, 13 deletions
diff --git a/src/preview/preview_default.rs b/src/preview/preview_default.rs index d2fd95e..0c5142c 100644 --- a/src/preview/preview_default.rs +++ b/src/preview/preview_default.rs @@ -1,15 +1,23 @@ use std::path; use crate::context::AppContext; +use crate::fs::JoshutoMetadata; use crate::preview::{preview_dir, preview_file}; use crate::ui::TuiBackend; -pub fn load_preview_path(context: &mut AppContext, backend: &mut TuiBackend, p: path::PathBuf) { - if p.is_dir() { +pub fn load_preview_path( + context: &mut AppContext, + backend: &mut TuiBackend, + p: path::PathBuf, + metadata: JoshutoMetadata, +) { + let preview_options = context.config_ref().preview_options_ref(); + + if metadata.is_dir() { let need_to_load = context - .tab_context_mut() - .curr_tab_mut() - .history_mut() + .tab_context_ref() + .curr_tab_ref() + .history_ref() .get(p.as_path()) .map(|e| e.need_update()) .unwrap_or(true); @@ -17,7 +25,7 @@ pub fn load_preview_path(context: &mut AppContext, backend: &mut TuiBackend, p: if need_to_load { preview_dir::Background::load_preview(context, p); } - } else if p.is_file() { + } else if metadata.len() <= preview_options.max_preview_size { let need_to_load = context .preview_context_ref() .get_preview(p.as_path()) @@ -26,19 +34,29 @@ pub fn load_preview_path(context: &mut AppContext, backend: &mut TuiBackend, p: if need_to_load { preview_file::Background::preview_path_with_script(context, backend, p); } + } else { } } pub fn load_preview(context: &mut AppContext, backend: &mut TuiBackend) { - let mut p: Option<path::PathBuf> = None; - if let Some(curr_list) = context.tab_context_ref().curr_tab_ref().curr_list_ref() { - if let Some(index) = curr_list.index { - let entry = &curr_list.contents[index]; - p = Some(entry.file_path().to_path_buf()) + let mut load_list = Vec::with_capacity(2); + + let curr_tab = context.tab_context_ref().curr_tab_ref(); + match curr_tab.curr_list_ref() { + Some(curr_list) => { + if let Some(index) = curr_list.index { + let entry = &curr_list.contents[index]; + load_list.push((entry.file_path().to_path_buf(), entry.metadata.clone())); + } + } + None => { + if let Ok(metadata) = JoshutoMetadata::from(curr_tab.cwd()) { + load_list.push((curr_tab.cwd().to_path_buf(), metadata)); + } } } - if let Some(p) = p { - load_preview_path(context, backend, p); + for (path, metadata) in load_list { + load_preview_path(context, backend, path, metadata); } } |