From f54ac44db35aa2a9ba99d1230e60b8f3710f081f Mon Sep 17 00:00:00 2001 From: Joe Ardent Date: Sat, 15 Oct 2022 22:31:33 -0700 Subject: [PATCH] fix bug in paused screen --- src/timer.rs | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/src/timer.rs b/src/timer.rs index f10ac81..882c0bb 100644 --- a/src/timer.rs +++ b/src/timer.rs @@ -1,11 +1,13 @@ -use egui::{Color32, Direction, FontId, Layout, RichText, Ui}; -use egui_extras::{Size, StripBuilder}; use std::time::{Duration, Instant}; -use crate::{cli::Cli, util::*}; use clap::Parser; - use eframe::{App, CreationContext}; +use egui::{Color32, Direction, FontId, Layout, RichText, Ui}; +use egui_extras::{Size, StripBuilder}; + +use crate::{cli::Cli, util::*}; + +const MIN_REPAINT: Duration = Duration::from_millis(100); #[derive(Debug, Clone, Copy)] pub enum CountDirection { @@ -63,8 +65,14 @@ impl App for Timer { match self.state { TimerState::Unstarted => self.unstarted(ui, vsize), - TimerState::Running(_) => self.running(ui, vsize), + TimerState::Running(cs) => { + if (Instant::now() - cs.updated) > MIN_REPAINT { + ctx.request_repaint(); + } + self.running(ui, vsize); + } TimerState::Paused(_) => self.paused(ui, vsize), + TimerState::Finished => self.finished(ui, vsize), } }); @@ -251,6 +259,11 @@ impl Timer { Color32::DARK_GRAY } }; + // if we're counting up, do the right thing + let remaining = match self.direction { + CountDirection::Down => remaining, + CountDirection::Up => self.duration - remaining, + }; display_digits(&mut strip, remaining, color, vsize * 0.7); });