mirror of
https://github.com/YGGverse/Yoda.git
synced 2025-03-13 06:01:21 +00:00
fix follow_to_index
exception
This commit is contained in:
parent
30142cf5e0
commit
2a535c7c60
@ -23,24 +23,29 @@ impl Memory {
|
||||
|
||||
/// Create new record in the navigation memory
|
||||
pub fn add(&self, value: GString, follow_to_index: bool) {
|
||||
// borrow subject in r/w mode
|
||||
let mut index = self.index.borrow_mut();
|
||||
|
||||
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()) {
|
||||
if let Some(next) = self.cursor.borrow_mut().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);
|
||||
}
|
||||
}
|
||||
|
||||
// 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),
|
||||
}
|
||||
None => index.push(value),
|
||||
}
|
||||
|
||||
if follow_to_index {
|
||||
// set cursor on to the last record
|
||||
self.cursor.borrow_mut().go_last(index.len());
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user