fix: wrong offset of existing directory on previewing

This commit is contained in:
sxyazi 2023-09-11 19:16:49 +08:00
parent 7ec7e36a53
commit cad6560955
No known key found for this signature in database
2 changed files with 12 additions and 10 deletions

View file

@ -65,8 +65,8 @@ impl Manager {
}
if hovered.is_dir() {
let len = self.active().history(url).map(|f| f.files.len());
self.active_mut().preview.folder(url, len, sequent);
let position = self.active().history(url).map(|f| (f.offset(), f.files.len()));
self.active_mut().preview.folder(url, position, sequent);
return false;
}

View file

@ -59,15 +59,15 @@ impl Preview {
}));
}
pub fn folder(&mut self, url: &Url, files: Option<usize>, sequent: bool) {
if let Some(files) = files {
self.skip = self.skip.min(files.saturating_sub(MANAGER.layout.preview_height()));
pub fn folder(&mut self, url: &Url, position: Option<(usize, usize)>, sequent: bool) {
if let Some((_, len)) = position {
self.skip = self.skip.min(len.saturating_sub(MANAGER.layout.preview_height()));
}
if self.same(url, MIME_DIR) {
return;
} else if !self.same_mime(url, MIME_DIR) {
self.skip = 0;
self.skip = position.map(|(offset, _)| offset).unwrap_or(0);
}
self.reset(|_| true);
@ -89,7 +89,7 @@ impl Preview {
return;
};
if files.is_some() {
if position.is_some() {
emit!(Files(FilesOp::Full(url, UnboundedReceiverStream::new(rx).collect().await)));
return;
}
@ -159,10 +159,12 @@ impl Preview {
return false;
};
let b = !lock.is_image();
if f(lock) {
self.lock = None;
if !f(lock) {
return false;
}
let b = !lock.is_image();
self.lock = None;
b
}
}