up scrolling

pull/6/head
dvkt 5 years ago
parent 441c39e4ad
commit 5075baab26

@ -202,8 +202,37 @@ impl MenuView {
}
fn action_up(&mut self) -> Action {
if self.link > 0 {
self.link -= 1;
if self.link == 0 {
return Action::None;
}
let new_link = self.link - 1;
if let Some(dir) = self.visible_link(new_link) {
match dir {
LinkDir::Above => {
// scroll up by 1
if self.scroll > 0 {
self.scroll -= 1;
}
// select it if it's visible now
if let Some(dir) = self.visible_link(new_link) {
if dir == LinkDir::Visible {
self.link = new_link;
}
}
}
LinkDir::Below => {
// jump to link....
if let Some(pos) = self.links().get(new_link) {
self.scroll = *pos;
self.link = new_link;
}
}
LinkDir::Visible => {
// select next link up
self.link = new_link;
}
}
Action::Redraw
} else {
Action::None
@ -212,29 +241,30 @@ impl MenuView {
fn action_down(&mut self) -> Action {
let count = self.links().len();
let new_link = self.link + 1;
if count > 0 && self.link < count - 1 {
if let Some(dir) = self.visible_link(self.link + 1) {
if let Some(dir) = self.visible_link(new_link) {
match dir {
LinkDir::Above => {
// jump to link....
if let Some(pos) = self.links().get(self.link + 1) {
if let Some(pos) = self.links().get(new_link) {
self.scroll = *pos;
self.link = self.link + 1;
self.link = new_link;
}
}
LinkDir::Below => {
// scroll down by 1
self.scroll += 1;
// select it if it's visible now
if let Some(dir) = self.visible_link(self.link + 1) {
if let Some(dir) = self.visible_link(new_link) {
if dir == LinkDir::Visible {
self.link += 1;
self.link = new_link;
}
}
}
LinkDir::Visible => {
// select next link down
self.link += 1;
self.link = new_link;
}
}
Action::Redraw

Loading…
Cancel
Save