mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-25 08:41:05 +00:00
fix(render): precache n-1 and n+1 pages
This commit is contained in:
parent
1f744810f4
commit
20219a4f52
2 changed files with 17 additions and 6 deletions
|
|
@ -56,8 +56,21 @@ impl Folder {
|
|||
return false;
|
||||
}
|
||||
|
||||
let old = self.page;
|
||||
self.page = new;
|
||||
|
||||
let prev_page = new.saturating_sub(1);
|
||||
let next_page = new.saturating_add(1);
|
||||
|
||||
if prev_page != new && prev_page != old {
|
||||
emit!(Pages(prev_page));
|
||||
}
|
||||
|
||||
emit!(Pages(new));
|
||||
|
||||
if next_page != new && next_page != old {
|
||||
emit!(Pages(next_page));
|
||||
}
|
||||
true
|
||||
}
|
||||
|
||||
|
|
@ -115,11 +128,11 @@ impl Folder {
|
|||
#[inline]
|
||||
pub fn hovered(&self) -> Option<&File> { self.files.get(self.cursor) }
|
||||
|
||||
pub fn paginate(&self) -> &[File] {
|
||||
pub fn paginate(&self, page: usize) -> &[File] {
|
||||
let len = self.files.len();
|
||||
let limit = MANAGER.layout.folder_height();
|
||||
|
||||
let start = (self.page * limit).min(len.saturating_sub(1));
|
||||
let start = (page * limit).min(len.saturating_sub(1));
|
||||
let end = (start + limit).min(len);
|
||||
&self.files[start..end]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -143,10 +143,8 @@ impl App {
|
|||
}
|
||||
}
|
||||
Event::Pages(page) => {
|
||||
if manager.current().page == page {
|
||||
let targets = self.cx.manager.current().paginate();
|
||||
tasks.precache_mime(targets, &self.cx.manager.mimetype);
|
||||
}
|
||||
let targets = self.cx.manager.current().paginate(page);
|
||||
tasks.precache_mime(targets, &self.cx.manager.mimetype);
|
||||
}
|
||||
Event::Mimetype(mimes) => {
|
||||
if manager.update_mimetype(mimes, tasks) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue