fix bug in paused screen
This commit is contained in:
parent
5c6405d7fb
commit
f54ac44db3
1 changed files with 18 additions and 5 deletions
23
src/timer.rs
23
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);
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in a new issue