mirror of https://github.com/bobwen-dev/hunter
fix updates ignoring sort/filter/etc settings when rendering
This commit is contained in:
parent
fa73d2cb8c
commit
cd773727eb
|
@ -255,7 +255,7 @@ impl FileBrowser {
|
|||
let left_path = main_path.parent().map(|p| p.to_path_buf());
|
||||
|
||||
let cache = fs_cache.clone();
|
||||
let main_widget = AsyncWidget::new(&core, move |_| {
|
||||
let main_widget = AsyncWidget::new(&core, move |stale| {
|
||||
let name = if main_path.parent().is_none() {
|
||||
"root".to_string()
|
||||
} else {
|
||||
|
@ -266,16 +266,16 @@ impl FileBrowser {
|
|||
let main_dir = File::new(&name,
|
||||
main_path.clone(),
|
||||
None);
|
||||
let mut files = cache.get_files_sync(&main_dir)?;
|
||||
let selection = cache.get_selection(&main_dir).ok();
|
||||
let (selected_file, files) = cache.get_files(&main_dir,
|
||||
stale.clone())?;
|
||||
let mut files = files.run_sync()?;
|
||||
|
||||
files.meta_all();
|
||||
|
||||
let mut list = ListView::new(&core_m.clone(),
|
||||
files);
|
||||
if let Some(file) = selection {
|
||||
list.select_file(&file);
|
||||
}
|
||||
selected_file.map(|f| list.select_file(&f));
|
||||
|
||||
|
||||
list.refresh().log();
|
||||
|
||||
|
@ -284,7 +284,7 @@ impl FileBrowser {
|
|||
|
||||
let cache = fs_cache.clone();
|
||||
if let Some(left_path) = left_path {
|
||||
let left_widget = AsyncWidget::new(&core, move |_| {
|
||||
let left_widget = AsyncWidget::new(&core, move |stale| {
|
||||
let name = if left_path.parent().is_none() {
|
||||
"root".to_string()
|
||||
} else {
|
||||
|
@ -295,14 +295,12 @@ impl FileBrowser {
|
|||
let left_dir = File::new(&name,
|
||||
left_path.clone(),
|
||||
None);
|
||||
let files = cache.get_files_sync(&left_dir)?;
|
||||
let selection = cache.get_selection(&left_dir).ok();
|
||||
let mut list = ListView::new(&core_l,
|
||||
files);
|
||||
if let Some(file) = selection {
|
||||
list.select_file(&file);
|
||||
}
|
||||
let (selected_file, files) = cache.get_files(&left_dir,
|
||||
stale.clone())?;
|
||||
let files = files.run_sync()?;
|
||||
let mut list = ListView::new(&core_l, files);
|
||||
|
||||
selected_file.map(|f| list.select_file(&f));
|
||||
list.refresh().log();
|
||||
|
||||
Ok(list)
|
||||
|
@ -375,20 +373,20 @@ impl FileBrowser {
|
|||
let core = self.core.clone();
|
||||
let cache = self.fs_cache.clone();
|
||||
|
||||
let main_widget = AsyncWidget::new(&core.clone(), move |_| {
|
||||
let files = match previewer_files {
|
||||
Some(files) => files,
|
||||
None => cache.get_files_sync(&dir)?
|
||||
let main_widget = AsyncWidget::new(&core.clone(), move |stale| {
|
||||
let (selected_file, files) = match previewer_files {
|
||||
Some(files) => (None, files),
|
||||
None => {
|
||||
let (selected_file, files) = cache.get_files(&dir,
|
||||
stale.clone())?;
|
||||
let files = files.run_sync()?;
|
||||
(selected_file, files)
|
||||
}
|
||||
};
|
||||
|
||||
let selection = cache.get_selection(&dir).ok();
|
||||
|
||||
let mut list = ListView::new(&core, files);
|
||||
|
||||
if let Some(file) = selection {
|
||||
list.select_file(&file);
|
||||
}
|
||||
|
||||
selected_file.map(|f| list.select_file(&f));
|
||||
list.content.meta_all();
|
||||
|
||||
Ok(list)
|
||||
|
@ -557,9 +555,12 @@ impl FileBrowser {
|
|||
|
||||
if let Ok(left_dir) = new_cwd.parent_as_file() {
|
||||
let cache = self.fs_cache.clone();
|
||||
let left_widget = AsyncWidget::new(&core.clone(), move |_| {
|
||||
let files = cache.get_files_sync(&left_dir)?;
|
||||
let list = ListView::new(&core, files);
|
||||
let left_widget = AsyncWidget::new(&core.clone(), move |stale| {
|
||||
let (selected_file, files) = cache.get_files(&left_dir,
|
||||
stale.clone())?;
|
||||
let files = files.run_sync()?;
|
||||
let mut list = ListView::new(&core, files);
|
||||
selected_file.map(|f| list.select_file(&f));
|
||||
Ok(list)
|
||||
});
|
||||
|
||||
|
@ -674,7 +675,7 @@ impl FileBrowser {
|
|||
}
|
||||
|
||||
let preview = self.preview_widget_mut()?;
|
||||
preview.set_file(file).log();
|
||||
preview.set_file(&file).log();
|
||||
Ok(())
|
||||
}
|
||||
|
||||
|
|
31
src/files.rs
31
src/files.rs
|
@ -190,26 +190,12 @@ impl RefreshPackage {
|
|||
|
||||
// Files added, removed, renamed to hidden, etc...
|
||||
files.recalculate_len();
|
||||
let new_len = files.len();
|
||||
// Need to unpack this to prevent issue with recursive Files type
|
||||
// Also, if no files remain add placeholder
|
||||
let files = if files.len() > 0 {
|
||||
// Sort again to make sure new/changed files are in correct order
|
||||
files.sort();
|
||||
files.files
|
||||
} else {
|
||||
let placeholder = File::new_placeholder(&files.directory.path).unwrap();
|
||||
files.files.push(placeholder);
|
||||
|
||||
// Need to sort because of possible hidden files
|
||||
files.sort();
|
||||
files.files
|
||||
};
|
||||
|
||||
let mut old_buffer = old_buffer;
|
||||
files.sort();
|
||||
|
||||
// Prerender new buffer in current thread
|
||||
let new_buffer = files.iter()
|
||||
let mut old_buffer = old_buffer;
|
||||
|
||||
let new_buffer = files.iter_files()
|
||||
.map(|file| {
|
||||
match list_pos_map.get(&file) {
|
||||
Some(&old_pos) =>
|
||||
|
@ -221,6 +207,15 @@ impl RefreshPackage {
|
|||
}
|
||||
}).collect();
|
||||
|
||||
// Need to unpack this to prevent issue with recursive Files type
|
||||
// Also, if no files remain add placeholder and set len
|
||||
let (files, new_len) = if files.len() > 0 {
|
||||
(files.files, files.len)
|
||||
} else {
|
||||
let placeholder = File::new_placeholder(&files.directory.path).unwrap();
|
||||
files.files.push(placeholder);
|
||||
(files.files, 1)
|
||||
};
|
||||
|
||||
|
||||
RefreshPackage {
|
||||
|
|
Loading…
Reference in New Issue