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;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let old = self.page;
|
||||||
self.page = new;
|
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));
|
emit!(Pages(new));
|
||||||
|
|
||||||
|
if next_page != new && next_page != old {
|
||||||
|
emit!(Pages(next_page));
|
||||||
|
}
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -115,11 +128,11 @@ impl Folder {
|
||||||
#[inline]
|
#[inline]
|
||||||
pub fn hovered(&self) -> Option<&File> { self.files.get(self.cursor) }
|
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 len = self.files.len();
|
||||||
let limit = MANAGER.layout.folder_height();
|
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);
|
let end = (start + limit).min(len);
|
||||||
&self.files[start..end]
|
&self.files[start..end]
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -143,10 +143,8 @@ impl App {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Event::Pages(page) => {
|
Event::Pages(page) => {
|
||||||
if manager.current().page == page {
|
let targets = self.cx.manager.current().paginate(page);
|
||||||
let targets = self.cx.manager.current().paginate();
|
tasks.precache_mime(targets, &self.cx.manager.mimetype);
|
||||||
tasks.precache_mime(targets, &self.cx.manager.mimetype);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
Event::Mimetype(mimes) => {
|
Event::Mimetype(mimes) => {
|
||||||
if manager.update_mimetype(mimes, tasks) {
|
if manager.update_mimetype(mimes, tasks) {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue