don't draw preview dir twice

This commit is contained in:
rabite 2020-01-27 15:25:44 +01:00
parent e993c2c275
commit b359cc9119
2 changed files with 28 additions and 11 deletions

View File

@ -331,32 +331,41 @@ impl FileListBuilder {
} }
}?; }?;
if self.meta_all { let mut view = ListView::new(&self.core, files);
files.meta_all();
} else if self.meta_upto > 0 {
files.meta_upto(self.meta_upto, Some(self.core.get_sender()));
}
let selected_file = match self.selected_file { let selected_file = match self.selected_file {
Some(f) => Some(f), Some(f) => Some(f),
None => { None => {
c.as_ref() c.as_ref()
.map(|c| c.get_selection(&files.directory).ok()) .map(|c| c.get_selection(&view.content.directory).ok())
.flatten() .flatten()
} }
}; };
let mut view = ListView::new(&self.core, files);
selected_file.map(|mut f| { selected_file.map(|mut f| {
f.meta_sync().log(); f.meta_sync().log();
view.select_file(&f); view.select_file(&f);
}); });
let from = match self.meta_all {
true => 0,
false => view.offset,
};
let ysize = view.core.coordinates.ysize_u();
let upto = match self.meta_all {
true => view.content.len,
false => from + ysize + 1
};
view.content
.iter_files_mut()
.skip(from)
.take(upto)
.for_each(|f| f.meta_sync().log());
view.content.meta_upto = Some(view.content.len);
if self.prerender { if self.prerender {
view.refresh().log();
match self.stale { match self.stale {
Some(s) => view.render_buffer_stale(s)?, Some(s) => view.render_buffer_stale(s)?,
None => view.render_buffer()? None => view.render_buffer()?
@ -367,6 +376,10 @@ impl FileListBuilder {
} }
}; };
view.content.set_clean();
view.content.dirty_meta.set_clean();
view.core.set_clean();
Ok(view) Ok(view)
} }
} }

View File

@ -451,6 +451,8 @@ impl Previewer {
stale: &Stale, stale: &Stale,
animator: &Stale) animator: &Stale)
-> HResult<PreviewWidget> { -> HResult<PreviewWidget> {
use crate::dirty::Dirtyable;
if stale.is_stale()? { return Previewer::preview_failed(&file) } if stale.is_stale()? { return Previewer::preview_failed(&file) }
let source = FileSource::Path(file.clone()); let source = FileSource::Path(file.clone());
@ -463,6 +465,8 @@ impl Previewer {
if stale.is_stale()? { return Previewer::preview_failed(&file) } if stale.is_stale()? { return Previewer::preview_failed(&file) }
file_list.animate_slide_up(Some(animator))?; file_list.animate_slide_up(Some(animator))?;
file_list.core.set_clean();
Ok(PreviewWidget::FileList(file_list)) Ok(PreviewWidget::FileList(file_list))
} }