diff --git a/client/src/tui/terminal/core.rs b/client/src/tui/terminal/core.rs index 42f050b..08623e9 100644 --- a/client/src/tui/terminal/core.rs +++ b/client/src/tui/terminal/core.rs @@ -37,14 +37,17 @@ impl TerminalCore { } pub fn cleanup(&mut self) -> Result<(), Box> { - let mut stdout = stdout(); - execute!(stdout, Show)?; - execute!(stdout, SetCursorStyle::DefaultUserShape)?; - execute!(stdout, LeaveAlternateScreen)?; - disable_raw_mode()?; - stdout.flush()?; + let backend = self.terminal.backend_mut(); execute!( - stdout, + backend, + Show, + SetCursorStyle::DefaultUserShape, + LeaveAlternateScreen + )?; + disable_raw_mode()?; + backend.flush()?; + execute!( + backend, crossterm::terminal::Clear(crossterm::terminal::ClearType::All), MoveTo(0, 0) )?; @@ -63,3 +66,9 @@ impl TerminalCore { Ok(()) } } + +impl Drop for TerminalCore { + fn drop(&mut self) { + let _ = self.cleanup(); + } +}