From c74b5786f2352ec32fca1c2ca3ad865c1bb5419d Mon Sep 17 00:00:00 2001 From: Henrik Friedrichsen Date: Sun, 17 Mar 2019 18:53:45 +0100 Subject: [PATCH] make TAB switch between search field and list view --- src/ui/listview.rs | 1 - src/ui/search.rs | 24 +++++++++++++++++------- 2 files changed, 17 insertions(+), 8 deletions(-) diff --git a/src/ui/listview.rs b/src/ui/listview.rs index 4a56dec..dae9424 100644 --- a/src/ui/listview.rs +++ b/src/ui/listview.rs @@ -95,7 +95,6 @@ impl View for ListView { } fn on_event(&mut self, e: Event) -> EventResult { - trace!("{:?}", e); match e { Event::Key(Key::Up) => { self.move_focus(-1); diff --git a/src/ui/search.rs b/src/ui/search.rs index 6475809..c12a3d7 100644 --- a/src/ui/search.rs +++ b/src/ui/search.rs @@ -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 } }