From fc2d7317540a2f592c60a531c4fce35e3391143c Mon Sep 17 00:00:00 2001 From: nyx Date: Thu, 31 Oct 2024 14:49:08 -0400 Subject: [PATCH] do not exit linutil in confirmation prompt when q is pressed (#758) * do not exit linutil in confirmation prompt when q is pressed * remove cap support * add ``ctrl + c`` exiting Co-authored-by: Adam Perkowski --------- Co-authored-by: nyx Co-authored-by: Adam Perkowski --- tui/src/confirmation.rs | 10 +++++----- tui/src/state.rs | 14 +++++++++----- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/tui/src/confirmation.rs b/tui/src/confirmation.rs index 28732e35..d883fd2f 100644 --- a/tui/src/confirmation.rs +++ b/tui/src/confirmation.rs @@ -88,7 +88,7 @@ impl FloatContent for ConfirmPrompt { use KeyCode::*; self.status = match key.code { Char('y') | Char('Y') => ConfirmStatus::Confirm, - Char('n') | Char('N') | Esc => ConfirmStatus::Abort, + Char('n') | Char('N') | Esc | Char('q') => ConfirmStatus::Abort, Char('j') => { self.scroll_down(); ConfirmStatus::None @@ -116,10 +116,10 @@ impl FloatContent for ConfirmPrompt { "Confirmation prompt", Box::new([ Shortcut::new("Continue", ["Y", "y"]), - Shortcut::new("Abort", ["N", "n"]), - Shortcut::new("Scroll up", ["j"]), - Shortcut::new("Scroll down", ["k"]), - Shortcut::new("Close linutil", ["CTRL-c", "q"]), + Shortcut::new("Abort", ["N", "n", "q", "Esc"]), + Shortcut::new("Scroll up", ["k"]), + Shortcut::new("Scroll down", ["j"]), + Shortcut::new("Close linutil", ["CTRL-c"]), ]), ) } diff --git a/tui/src/state.rs b/tui/src/state.rs index be120436..fbd21ac8 100644 --- a/tui/src/state.rs +++ b/tui/src/state.rs @@ -420,11 +420,15 @@ impl AppState { // This should be defined first to allow closing // the application even when not drawable ( If terminal is small ) // Exit on 'q' or 'Ctrl-c' input - if matches!( - self.focus, - Focus::TabList | Focus::List | Focus::ConfirmationPrompt(_) - ) && (key.code == KeyCode::Char('q') - || key.modifiers.contains(KeyModifiers::CONTROL) && key.code == KeyCode::Char('c')) + if matches!(self.focus, Focus::TabList | Focus::List) + && (key.code == KeyCode::Char('q') + || key.modifiers.contains(KeyModifiers::CONTROL) && key.code == KeyCode::Char('c')) + { + return false; + } + + if matches!(self.focus, Focus::ConfirmationPrompt(_)) + && (key.modifiers.contains(KeyModifiers::CONTROL) && key.code == KeyCode::Char('c')) { return false; }