From 106ae1419aeb7e5b35b27cb1323ad185e90f1ded Mon Sep 17 00:00:00 2001 From: Naseschwarz Date: Thu, 17 Apr 2025 15:47:33 +0200 Subject: [PATCH] Show cursor on panic ratatui::Terminal starts by hiding the cursor. If we panic and abort, that Terminal instance is not dropped, which leaves restoring the cursor state to us. --- src/main.rs | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main.rs b/src/main.rs index feea894491..524261d0b1 100644 --- a/src/main.rs +++ b/src/main.rs @@ -288,8 +288,10 @@ fn setup_terminal() -> Result<()> { } fn shutdown_terminal() { + let mut stdout = io::stdout(); + let leave_screen = - io::stdout().execute(LeaveAlternateScreen).map(|_f| ()); + stdout.execute(LeaveAlternateScreen).map(|_f| ()); if let Err(e) = leave_screen { eprintln!("leave_screen failed:\n{e}"); @@ -300,6 +302,10 @@ fn shutdown_terminal() { if let Err(e) = leave_raw_mode { eprintln!("leave_raw_mode failed:\n{e}"); } + + if let Err(e) = stdout.execute(crossterm::cursor::Show) { + eprintln!("Showing cursor failed:\n{e}"); + } } fn draw(terminal: &mut Terminal, app: &App) -> io::Result<()> {