drop for terminalcore

This commit is contained in:
filipriec
2025-03-21 14:17:02 +01:00
parent 8dfec29202
commit af0d71c5cf

View File

@@ -37,14 +37,17 @@ impl TerminalCore {
} }
pub fn cleanup(&mut self) -> Result<(), Box<dyn std::error::Error>> { pub fn cleanup(&mut self) -> Result<(), Box<dyn std::error::Error>> {
let mut stdout = stdout(); let backend = self.terminal.backend_mut();
execute!(stdout, Show)?;
execute!(stdout, SetCursorStyle::DefaultUserShape)?;
execute!(stdout, LeaveAlternateScreen)?;
disable_raw_mode()?;
stdout.flush()?;
execute!( execute!(
stdout, backend,
Show,
SetCursorStyle::DefaultUserShape,
LeaveAlternateScreen
)?;
disable_raw_mode()?;
backend.flush()?;
execute!(
backend,
crossterm::terminal::Clear(crossterm::terminal::ClearType::All), crossterm::terminal::Clear(crossterm::terminal::ClearType::All),
MoveTo(0, 0) MoveTo(0, 0)
)?; )?;
@@ -63,3 +66,9 @@ impl TerminalCore {
Ok(()) Ok(())
} }
} }
impl Drop for TerminalCore {
fn drop(&mut self) {
let _ = self.cleanup();
}
}