summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNbiba Bedis <bedisnbiba@gmail.com>2021-01-19 18:55:30 +0100
committercyqsimon <28627918+cyqsimon@users.noreply.github.com>2023-08-25 17:34:37 +0800
commit0b7be9398e3b9b0fbe792c51e019e79914f9fd23 (patch)
treefa1a77201552cd9f46c75af74ff7ab05175c88b7
parent66ba68954eece41cbc73d09372f060c9af851ccd (diff)
use alternate mode
-rw-r--r--src/display/ui.rs1
-rw-r--r--src/main.rs11
2 files changed, 10 insertions, 2 deletions
diff --git a/src/display/ui.rs b/src/display/ui.rs
index bc459cc..111dfe1 100644
--- a/src/display/ui.rs
+++ b/src/display/ui.rs
@@ -190,7 +190,6 @@ where
self.ip_to_host.extend(ip_to_host);
}
pub fn end(&mut self) {
- self.terminal.clear().unwrap();
self.terminal.show_cursor().unwrap();
}
}
diff --git a/src/main.rs b/src/main.rs
index dfc8ce9..c64504d 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -24,6 +24,7 @@ use ::ratatui::backend::Backend;
use std::process;
+use ::std::io::Write;
use ::std::net::Ipv4Addr;
use ::std::time::{Duration, Instant};
use ::ratatui::backend::CrosstermBackend;
@@ -88,7 +89,9 @@ fn try_main() -> Result<(), failure::Error> {
} else {
match terminal::enable_raw_mode() {
Ok(()) => {
- let stdout = std::io::stdout();
+ let mut stdout = std::io::stdout();
+ // Ignore enteralternatescreen error
+ let _ = crossterm::execute!(&mut stdout, terminal::EnterAlternateScreen);
let terminal_backend = CrosstermBackend::new(stdout);
start(terminal_backend, os_input, opts);
}
@@ -239,6 +242,12 @@ where
Ok(_) => {}
Err(_) => println!("Error could not disable raw input"),
}
+ let mut stdout = std::io::stdout();
+ if let Err(_) =
+ crossterm::execute!(&mut stdout, terminal::LeaveAlternateScreen)
+ {
+ println!("Error could not leave alternte screen");
+ };
break;
}
Event::Key(KeyEvent {