From a7651af00fd7677ff2a4300bb446685b184b2b79 Mon Sep 17 00:00:00 2001 From: thomasschafer Date: Mon, 2 Dec 2024 14:42:09 +0000 Subject: [PATCH] Allow enter to close popup --- src/app.rs | 56 ++++++++++++++++++++++++++---------------------------- 1 file changed, 27 insertions(+), 29 deletions(-) diff --git a/src/app.rs b/src/app.rs index d819a15..3c63f29 100644 --- a/src/app.rs +++ b/src/app.rs @@ -494,26 +494,29 @@ impl App { } fn handle_key_searching(&mut self, key: &KeyEvent) -> bool { - self.search_fields.show_error_popup = false; - match (key.code, key.modifiers) { - (KeyCode::Enter, _) => { - self.app_event_sender.send(AppEvent::PerformSearch).unwrap(); - } - (KeyCode::BackTab, _) | (KeyCode::Tab, KeyModifiers::ALT) => { - self.search_fields.focus_prev(); - } - (KeyCode::Tab, _) => { - self.search_fields.focus_next(); - } - (code, modifiers) => { - if let FieldName::FixedStrings = self.search_fields.highlighted_field_name() { - // TODO: ideally this should only happen when the field is checked, but for now this will do - self.search_fields.search_mut().clear_error(); - }; - self.search_fields - .highlighted_field() - .write() - .handle_keys(code, modifiers); + if self.search_fields.show_error_popup { + self.search_fields.show_error_popup = false; + } else { + match (key.code, key.modifiers) { + (KeyCode::Enter, _) => { + self.app_event_sender.send(AppEvent::PerformSearch).unwrap(); + } + (KeyCode::BackTab, _) | (KeyCode::Tab, KeyModifiers::ALT) => { + self.search_fields.focus_prev(); + } + (KeyCode::Tab, _) => { + self.search_fields.focus_next(); + } + (code, modifiers) => { + if let FieldName::FixedStrings = self.search_fields.highlighted_field_name() { + // TODO: ideally this should only happen when the field is checked, but for now this will do + self.search_fields.search_mut().clear_error(); + }; + self.search_fields + .highlighted_field() + .write() + .handle_keys(code, modifiers); + } } }; false @@ -568,16 +571,11 @@ impl App { } match (key.code, key.modifiers) { - (KeyCode::Esc, _) | (KeyCode::Char('c'), KeyModifiers::CONTROL) => { - let exit = match &self.current_screen { - Screen::SearchFields if self.search_fields.show_error_popup => { - self.search_fields.show_error_popup = false; - false - } - _ => true, - }; + (KeyCode::Esc, _) | (KeyCode::Char('c'), KeyModifiers::CONTROL) + if !self.search_fields.show_error_popup => + { return Ok(EventHandlingResult { - exit, + exit: true, rerender: true, }); }