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 {
files.meta_all();
} else if self.meta_upto > 0 {
files.meta_upto(self.meta_upto, Some(self.core.get_sender()));
}
let mut view = ListView::new(&self.core, files);
let selected_file = match self.selected_file {
Some(f) => Some(f),
None => {
c.as_ref()
.map(|c| c.get_selection(&files.directory).ok())
.map(|c| c.get_selection(&view.content.directory).ok())
.flatten()
}
};
let mut view = ListView::new(&self.core, files);
selected_file.map(|mut f| {
f.meta_sync().log();
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 {
view.refresh().log();
match self.stale {
Some(s) => view.render_buffer_stale(s)?,
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)
}
}

View File

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