Suspend and unsuspend terminal

This commit is contained in:
Joscha 2022-06-17 19:52:02 +02:00
parent a0602a941c
commit 761519c1a7

View file

@ -25,9 +25,7 @@ pub struct Terminal {
impl Drop for Terminal {
fn drop(&mut self) {
let _ = crossterm::terminal::disable_raw_mode();
let _ = self.out.execute(LeaveAlternateScreen);
let _ = self.out.execute(Show);
let _ = self.suspend();
}
}
@ -43,11 +41,24 @@ impl Terminal {
prev_frame_buffer: Buffer::default(),
full_redraw: true,
};
crossterm::terminal::enable_raw_mode()?;
result.out.execute(EnterAlternateScreen)?;
result.unsuspend()?;
Ok(result)
}
pub fn suspend(&mut self) -> io::Result<()> {
crossterm::terminal::disable_raw_mode()?;
self.out.execute(LeaveAlternateScreen)?;
self.out.execute(Show)?;
Ok(())
}
pub fn unsuspend(&mut self) -> io::Result<()> {
crossterm::terminal::enable_raw_mode()?;
self.out.execute(EnterAlternateScreen)?;
self.full_redraw = true;
Ok(())
}
pub fn set_measuring(&mut self, active: bool) {
self.frame.widthdb.active = active;
}