summaryrefslogtreecommitdiffstats
path: root/src/preview/preview_default.rs
diff options
context:
space:
mode:
authorJeff Zhao <jeff.no.zhao@gmail.com>2021-09-26 10:24:35 -0400
committerJeff Zhao <jeff.no.zhao@gmail.com>2021-09-26 10:24:35 -0400
commit4a05a399fab43aba7c1872f9950e0e9663fdae0d (patch)
treeac3c1cc71c8ce0d2761b856afaa8dc63e4ed45bc /src/preview/preview_default.rs
parentb4a62fcbddb870d11dcf72964c048ee6e195be40 (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.rs44
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);
}
}