diff --git a/src/state.rs b/src/state.rs index 387a00a4c1..9923e05e53 100644 --- a/src/state.rs +++ b/src/state.rs @@ -12,6 +12,7 @@ use arboard::Clipboard; use crossterm::event; use crossterm::event::Event; use crossterm::event::KeyCode; +use crossterm::event::KeyEvent; use crossterm::event::KeyEventKind; use crossterm::event::KeyModifiers; use git2::Repository; @@ -105,6 +106,7 @@ impl State { screen.size = Size::new(w, h); } } + Event::Key(key) if State::is_system_quit(&key) => self.quit = true, Event::Key(key) => { if self.prompt.state.is_focused() { self.prompt.state.handle_key_event(key) @@ -136,6 +138,13 @@ impl State { Ok(()) } + fn is_system_quit(key: &KeyEvent) -> bool { + matches!( + (key.code, key.modifiers), + (KeyCode::Char('c'), KeyModifiers::CONTROL) + ) + } + fn update_prompt(&mut self, term: &mut Term) -> Res<()> { if self.prompt.state.status() == Status::Aborted { self.unhide_menu();