diff --git a/src/app.rs b/src/app.rs index b06ea86..69bbf70 100644 --- a/src/app.rs +++ b/src/app.rs @@ -1301,9 +1301,9 @@ impl TTApp { } }, Key::Char('e') => { - events.pause_event_loop(terminal); + events.pause_key_capture(terminal); let r = self.task_edit(); - events.resume_event_loop(terminal); + events.resume_key_capture(terminal); match r { Ok(_) => self.update()?, Err(e) => { diff --git a/src/util.rs b/src/util.rs index 97df138..988a3ef 100644 --- a/src/util.rs +++ b/src/util.rs @@ -146,19 +146,27 @@ impl Events { *self.pause_ticker.lock().unwrap() = false; } - pub fn pause_event_loop(&self, terminal: &mut Terminal>) { + pub fn pause_event_loop(&self) { *self.pause_stdin.lock().unwrap() = true; + } + + pub fn resume_event_loop(&self) { + *self.pause_stdin.lock().unwrap() = false; + } + + pub fn pause_key_capture(&self, terminal: &mut Terminal>) { + self.pause_event_loop(); std::thread::sleep(std::time::Duration::from_millis(50)); disable_raw_mode().unwrap(); execute!(io::stdout(), LeaveAlternateScreen, DisableMouseCapture).unwrap(); terminal.show_cursor().unwrap(); } - pub fn resume_event_loop(&self, terminal: &mut Terminal>) { + pub fn resume_key_capture(&self, terminal: &mut Terminal>) { enable_raw_mode().unwrap(); execute!(io::stdout(), EnterAlternateScreen, EnableMouseCapture).unwrap(); std::thread::sleep(std::time::Duration::from_millis(50)); - *self.pause_stdin.lock().unwrap() = false; + self.resume_event_loop(); terminal.resize(terminal.size().unwrap()).unwrap(); } }