Suspend and unsuspend terminal
This commit is contained in:
parent
a0602a941c
commit
761519c1a7
1 changed files with 16 additions and 5 deletions
|
|
@ -25,9 +25,7 @@ pub struct Terminal {
|
||||||
|
|
||||||
impl Drop for Terminal {
|
impl Drop for Terminal {
|
||||||
fn drop(&mut self) {
|
fn drop(&mut self) {
|
||||||
let _ = crossterm::terminal::disable_raw_mode();
|
let _ = self.suspend();
|
||||||
let _ = self.out.execute(LeaveAlternateScreen);
|
|
||||||
let _ = self.out.execute(Show);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -43,11 +41,24 @@ impl Terminal {
|
||||||
prev_frame_buffer: Buffer::default(),
|
prev_frame_buffer: Buffer::default(),
|
||||||
full_redraw: true,
|
full_redraw: true,
|
||||||
};
|
};
|
||||||
crossterm::terminal::enable_raw_mode()?;
|
result.unsuspend()?;
|
||||||
result.out.execute(EnterAlternateScreen)?;
|
|
||||||
Ok(result)
|
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) {
|
pub fn set_measuring(&mut self, active: bool) {
|
||||||
self.frame.widthdb.active = active;
|
self.frame.widthdb.active = active;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue