mirror of
https://github.com/sxyazi/yazi.git
synced 2026-07-25 08:41:05 +00:00
Refactor
This commit is contained in:
parent
839a43a6ee
commit
c0ff5805cc
1 changed files with 23 additions and 21 deletions
|
|
@ -63,7 +63,7 @@ impl Folder {
|
||||||
|
|
||||||
pub fn arrow(&mut self, step: impl Into<Step>) -> bool {
|
pub fn arrow(&mut self, step: impl Into<Step>) -> bool {
|
||||||
let step = step.into() as Step;
|
let step = step.into() as Step;
|
||||||
let b = if self.files.is_empty() {
|
let mut b = if self.files.is_empty() {
|
||||||
(self.cursor, self.offset, self.tracing) = (0, 0, false);
|
(self.cursor, self.offset, self.tracing) = (0, 0, false);
|
||||||
false
|
false
|
||||||
} else if step.is_positive() {
|
} else if step.is_positive() {
|
||||||
|
|
@ -72,9 +72,10 @@ impl Folder {
|
||||||
self.prev(step)
|
self.prev(step)
|
||||||
};
|
};
|
||||||
|
|
||||||
self.sync_page(false);
|
|
||||||
self.adjust_offset();
|
|
||||||
self.tracing |= b;
|
self.tracing |= b;
|
||||||
|
b |= self.squeeze_offset();
|
||||||
|
|
||||||
|
self.sync_page(false);
|
||||||
b
|
b
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -104,21 +105,6 @@ impl Folder {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn adjust_offset(&mut self) {
|
|
||||||
let len = self.files.len();
|
|
||||||
let limit = LAYOUT.load().current.height as usize;
|
|
||||||
let scrolloff = (limit / 2).min(MANAGER.scrolloff as usize);
|
|
||||||
let max_offset = (self.offset + limit).min(len).saturating_sub(scrolloff);
|
|
||||||
|
|
||||||
let new_offset = if self.cursor >= max_offset {
|
|
||||||
self.cursor.saturating_sub(limit) + scrolloff
|
|
||||||
} else {
|
|
||||||
self.offset
|
|
||||||
};
|
|
||||||
|
|
||||||
self.offset = new_offset.min(len.saturating_sub(limit));
|
|
||||||
}
|
|
||||||
|
|
||||||
fn next(&mut self, step: Step) -> bool {
|
fn next(&mut self, step: Step) -> bool {
|
||||||
let old = (self.cursor, self.offset);
|
let old = (self.cursor, self.offset);
|
||||||
let len = self.files.len();
|
let len = self.files.len();
|
||||||
|
|
@ -127,10 +113,10 @@ impl Folder {
|
||||||
let scrolloff = (limit / 2).min(MANAGER.scrolloff as usize);
|
let scrolloff = (limit / 2).min(MANAGER.scrolloff as usize);
|
||||||
|
|
||||||
self.cursor = step.add(self.cursor, limit).min(len.saturating_sub(1));
|
self.cursor = step.add(self.cursor, limit).min(len.saturating_sub(1));
|
||||||
self.offset = if self.cursor >= (self.offset + limit).min(len).saturating_sub(scrolloff) {
|
self.offset = if self.cursor < (self.offset + limit).min(len).saturating_sub(scrolloff) {
|
||||||
len.saturating_sub(limit).min(self.offset + self.cursor - old.0)
|
|
||||||
} else {
|
|
||||||
self.offset.min(len.saturating_sub(1))
|
self.offset.min(len.saturating_sub(1))
|
||||||
|
} else {
|
||||||
|
len.saturating_sub(limit).min(self.offset + self.cursor - old.0)
|
||||||
};
|
};
|
||||||
|
|
||||||
old != (self.cursor, self.offset)
|
old != (self.cursor, self.offset)
|
||||||
|
|
@ -152,6 +138,22 @@ impl Folder {
|
||||||
|
|
||||||
old != (self.cursor, self.offset)
|
old != (self.cursor, self.offset)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn squeeze_offset(&mut self) -> bool {
|
||||||
|
let old = self.offset;
|
||||||
|
let len = self.files.len();
|
||||||
|
|
||||||
|
let limit = LAYOUT.load().current.height as usize;
|
||||||
|
let scrolloff = (limit / 2).min(MANAGER.scrolloff as usize);
|
||||||
|
|
||||||
|
self.offset = if self.cursor < (self.offset + limit).min(len).saturating_sub(scrolloff) {
|
||||||
|
len.saturating_sub(limit).min(self.offset)
|
||||||
|
} else {
|
||||||
|
len.saturating_sub(limit).min(self.cursor.saturating_sub(limit) + scrolloff)
|
||||||
|
};
|
||||||
|
|
||||||
|
old != self.offset
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Folder {
|
impl Folder {
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue