make TAB switch between search field and list view

This commit is contained in:
Henrik Friedrichsen
2019-03-17 18:53:45 +01:00
parent 9920bf605f
commit c74b5786f2
2 changed files with 17 additions and 8 deletions

View File

@@ -95,7 +95,6 @@ impl<I: ListItem> View for ListView<I> {
}
fn on_event(&mut self, e: Event) -> EventResult {
trace!("{:?}", e);
match e {
Event::Key(Key::Up) => {
self.move_focus(-1);

View File

@@ -74,6 +74,13 @@ impl SearchView {
});
self.edit_focused = true;
}
fn pass_event_focussed(&mut self, event: Event) -> EventResult {
match self.edit_focused {
true => self.edit.on_event(event),
false => self.list.on_event(event)
}
}
}
impl View for SearchView {
@@ -113,15 +120,18 @@ impl View for SearchView {
}
fn on_event(&mut self, event: Event) -> EventResult {
if self.edit_focused {
if event == Event::Key(Key::Esc) {
let ret = match event {
Event::Key(Key::Tab) => {
self.edit_focused = !self.edit_focused;
EventResult::Consumed(None)
}
Event::Key(Key::Esc) if self.edit_focused => {
self.edit_focused = false;
EventResult::Consumed(None)
} else {
self.edit.on_event(event)
}
} else {
self.list.on_event(event)
}
_ => self.pass_event_focussed(event)
};
ret
}
}