Can press 'Esc' key to close windows
This commit is contained in:
		| @@ -69,7 +69,7 @@ impl GameRulesConfigurationScreen { | |||||||
|                 if let Event::Key(key) = event::read()? { |                 if let Event::Key(key) = event::read()? { | ||||||
|                     match key.code { |                     match key.code { | ||||||
|                         // Quit app |                         // Quit app | ||||||
|                         KeyCode::Char('q') => return Ok(ScreenResult::Canceled), |                         KeyCode::Char('q') | KeyCode::Esc => return Ok(ScreenResult::Canceled), | ||||||
|  |  | ||||||
|                         // Navigate between fields |                         // Navigate between fields | ||||||
|                         KeyCode::Up | KeyCode::Left => cursor_pos -= 1, |                         KeyCode::Up | KeyCode::Left => cursor_pos -= 1, | ||||||
|   | |||||||
| @@ -18,6 +18,7 @@ use crate::ui_widgets::button_widget::ButtonWidget; | |||||||
| pub fn confirm<B: Backend>(terminal: &mut Terminal<B>, msg: &str) -> bool { | pub fn confirm<B: Backend>(terminal: &mut Terminal<B>, msg: &str) -> bool { | ||||||
|     matches!( |     matches!( | ||||||
|         ConfirmDialogScreen::new(msg) |         ConfirmDialogScreen::new(msg) | ||||||
|  |             .set_can_escape(true) | ||||||
|             .show(terminal) |             .show(terminal) | ||||||
|             .unwrap_or(ScreenResult::Canceled), |             .unwrap_or(ScreenResult::Canceled), | ||||||
|         ScreenResult::Ok(true) |         ScreenResult::Ok(true) | ||||||
| @@ -41,6 +42,11 @@ impl<'a> ConfirmDialogScreen<'a> { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     pub fn set_can_escape(mut self, v: bool) -> Self { | ||||||
|  |         self.can_escape = v; | ||||||
|  |         self | ||||||
|  |     } | ||||||
|  |  | ||||||
|     pub fn show<B: Backend>( |     pub fn show<B: Backend>( | ||||||
|         mut self, |         mut self, | ||||||
|         terminal: &mut Terminal<B>, |         terminal: &mut Terminal<B>, | ||||||
|   | |||||||
| @@ -147,7 +147,7 @@ impl GameScreen { | |||||||
|  |  | ||||||
|                     match key.code { |                     match key.code { | ||||||
|                         // Leave game |                         // Leave game | ||||||
|                         KeyCode::Char('q') |                         KeyCode::Char('q') | KeyCode::Esc | ||||||
|                             if confirm(terminal, "Do you really want to leave game?") => |                             if confirm(terminal, "Do you really want to leave game?") => | ||||||
|                         { |                         { | ||||||
|                             self.client.close_connection().await; |                             self.client.close_connection().await; | ||||||
|   | |||||||
| @@ -52,7 +52,7 @@ impl<'a> PopupScreen<'a> { | |||||||
|             if event::poll(timeout)? { |             if event::poll(timeout)? { | ||||||
|                 if let Event::Key(key) = event::read()? { |                 if let Event::Key(key) = event::read()? { | ||||||
|                     match key.code { |                     match key.code { | ||||||
|                         KeyCode::Char('q') => return Ok(ScreenResult::Canceled), |                         KeyCode::Char('q') | KeyCode::Esc => return Ok(ScreenResult::Canceled), | ||||||
|                         KeyCode::Enter => { |                         KeyCode::Enter => { | ||||||
|                             return Ok(ScreenResult::Ok(())); |                             return Ok(ScreenResult::Ok(())); | ||||||
|                         } |                         } | ||||||
|   | |||||||
| @@ -49,7 +49,7 @@ impl SelectBotTypeScreen { | |||||||
|             if event::poll(timeout)? { |             if event::poll(timeout)? { | ||||||
|                 if let Event::Key(key) = event::read()? { |                 if let Event::Key(key) = event::read()? { | ||||||
|                     match key.code { |                     match key.code { | ||||||
|                         KeyCode::Char('q') => return Ok(ScreenResult::Canceled), |                         KeyCode::Char('q') | KeyCode::Esc => return Ok(ScreenResult::Canceled), | ||||||
|                         KeyCode::Enter => { |                         KeyCode::Enter => { | ||||||
|                             return Ok(ScreenResult::Ok(self.types[self.curr_selection].r#type)); |                             return Ok(ScreenResult::Ok(self.types[self.curr_selection].r#type)); | ||||||
|                         } |                         } | ||||||
|   | |||||||
| @@ -92,7 +92,7 @@ impl SelectPlayModeScreen { | |||||||
|             if crossterm::event::poll(timeout)? { |             if crossterm::event::poll(timeout)? { | ||||||
|                 if let Event::Key(key) = event::read()? { |                 if let Event::Key(key) = event::read()? { | ||||||
|                     match key.code { |                     match key.code { | ||||||
|                         KeyCode::Char('q') => return Ok(ScreenResult::Canceled), |                         KeyCode::Char('q') | KeyCode::Esc => return Ok(ScreenResult::Canceled), | ||||||
|                         KeyCode::Enter => { |                         KeyCode::Enter => { | ||||||
|                             return Ok(ScreenResult::Ok( |                             return Ok(ScreenResult::Ok( | ||||||
|                                 AVAILABLE_PLAY_MODES[self.curr_selection].value, |                                 AVAILABLE_PLAY_MODES[self.curr_selection].value, | ||||||
|   | |||||||
| @@ -66,7 +66,7 @@ impl<'a> SetBoatsLayoutScreen<'a> { | |||||||
|                 let event = event::read()?; |                 let event = event::read()?; | ||||||
|                 if let Event::Key(key) = &event { |                 if let Event::Key(key) = &event { | ||||||
|                     match key.code { |                     match key.code { | ||||||
|                         KeyCode::Char('q') => { |                         KeyCode::Char('q') | KeyCode::Esc => { | ||||||
|                             if !self.confirm_on_cancel |                             if !self.confirm_on_cancel | ||||||
|                                 || confirm(terminal, "Do you really want to quit?") |                                 || confirm(terminal, "Do you really want to quit?") | ||||||
|                             { |                             { | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user