diff --git a/src/app.rs b/src/app.rs index 3878e9e8..bb204529 100644 --- a/src/app.rs +++ b/src/app.rs @@ -142,9 +142,11 @@ impl App { if !self.commit.is_visible() { if self.index.event(ev) { + self.update(); return; } if self.index_wd.event(ev) { + self.update(); return; } if self.diff.event(ev) { @@ -172,9 +174,13 @@ impl App { }) } keys::STATUS_STAGE_FILE => { - self.index_add_remove() + self.index_add_remove(); + self.update(); + } + keys::STATUS_RESET_FILE => { + self.index_reset(); + self.update(); } - keys::STATUS_RESET_FILE => self.index_reset(), _ => (), }; } @@ -305,6 +311,8 @@ impl App { self.diff.focus(true); } }; + + self.update(); } } diff --git a/src/main.rs b/src/main.rs index 615323fb..69927e69 100644 --- a/src/main.rs +++ b/src/main.rs @@ -38,17 +38,17 @@ fn main() -> Result<()> { let receiver = poll::start_polling_thread(); loop { - app.update(); - - terminal.draw(|mut f| app.draw(&mut f))?; - let events = receiver.recv().unwrap(); for e in events { - if let QueueEvent::Event(ev) = e { + if let QueueEvent::InputEvent(ev) = e { app.event(ev); + } else { + app.update(); } } + terminal.draw(|mut f| app.draw(&mut f))?; + if app.is_quit() { break; } diff --git a/src/poll.rs b/src/poll.rs index c7cf29da..fb832690 100644 --- a/src/poll.rs +++ b/src/poll.rs @@ -9,13 +9,13 @@ use std::{ #[derive(Clone)] pub enum QueueEvent { Tick, - Event(Event), + InputEvent(Event), } static MAX_POLL_DURATION: Duration = Duration::from_secs(2); static MIN_POLL_DURATION: Duration = Duration::from_millis(5); static MAX_BATCHING_DURATION: Duration = Duration::from_millis(25); -static TICK_DURATION: Duration = Duration::from_secs(2); +static TICK_DURATION: Duration = Duration::from_secs(5); /// we run 2 threads feeding us with update events. /// @@ -36,7 +36,7 @@ pub fn start_polling_thread() -> Receiver> { MIN_POLL_DURATION }; if let Some(e) = poll(timeout) { - batch.push(QueueEvent::Event(e)); + batch.push(QueueEvent::InputEvent(e)); } if !batch.is_empty()