mirror of
https://github.com/YGGverse/Yoda.git
synced 2026-03-31 16:45:27 +00:00
update history navigation rules
This commit is contained in:
parent
6585597103
commit
30142cf5e0
1 changed files with 19 additions and 11 deletions
|
|
@ -21,19 +21,27 @@ impl Memory {
|
||||||
|
|
||||||
// Actions
|
// Actions
|
||||||
|
|
||||||
|
/// Create new record in the navigation memory
|
||||||
pub fn add(&self, value: GString, follow_to_index: bool) {
|
pub fn add(&self, value: GString, follow_to_index: bool) {
|
||||||
let mut index = self.index.borrow_mut();
|
|
||||||
|
|
||||||
match index.last() {
|
|
||||||
Some(last) => {
|
|
||||||
if *last != value {
|
|
||||||
index.push(value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
None => index.push(value),
|
|
||||||
}
|
|
||||||
|
|
||||||
if follow_to_index {
|
if follow_to_index {
|
||||||
|
// request index recording
|
||||||
|
let mut index = self.index.borrow_mut();
|
||||||
|
// drop forward history if the user continue navigation
|
||||||
|
// from the previous history position
|
||||||
|
if let Some(next) = self.cursor.borrow().next(index.len()) {
|
||||||
|
index.truncate(next);
|
||||||
|
}
|
||||||
|
// prevent duplicates at the last history position
|
||||||
|
// e.g. on page reload with `follow_to_index` enabled
|
||||||
|
match index.last() {
|
||||||
|
Some(last) => {
|
||||||
|
if *last != value {
|
||||||
|
index.push(value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
None => index.push(value),
|
||||||
|
}
|
||||||
|
// set cursor on to the last record
|
||||||
self.cursor.borrow_mut().go_last(index.len());
|
self.cursor.borrow_mut().go_last(index.len());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue