jumping behavior

pull/6/head
dvkt 5 years ago
parent f6db8d0482
commit b3805ec511

@ -242,16 +242,29 @@ impl MenuView {
self.input.push(c); self.input.push(c);
let count = self.links().count(); let count = self.links().count();
let input = &self.input; let input = &self.input;
for i in 0..count {
// jump to number // jump to <10 number
for z in 1..=9 { if input.len() == 1 {
if count < (z * 10) && c == to_char(z as u32) && i == z - 1 { if let Some(c) = input.chars().nth(0) {
return self.action_follow_link(i); if c.is_digit(10) {
let i = c.to_digit(10).unwrap() as usize;
if i < count && count < (i * 10) {
return self.action_follow_link(i - 1);
} }
} }
if input.len() > 1 && input == &(i + 1).to_string() { }
return self.action_select_link(i); } else if input.len() == 2 {
} else { // jump to >10 number
let s = input.chars().take(2).collect::<String>();
if let Ok(num) = s.parse::<usize>() {
if num <= count {
return self.action_follow_link(num - 1);
}
}
}
for i in 0..count {
// check for name match
let name = if let Some(link) = self.links().nth(i) { let name = if let Some(link) = self.links().nth(i) {
link.name.to_ascii_lowercase() link.name.to_ascii_lowercase()
} else { } else {
@ -262,8 +275,9 @@ impl MenuView {
return self.action_select_link(i); return self.action_select_link(i);
} }
} }
}
self.action_select_link(0) self.link = 0;
Action::Redraw
} }
_ => Action::Unknown, _ => Action::Unknown,
} }

Loading…
Cancel
Save