aboutsummaryrefslogtreecommitdiffstats
path: root/src/notify.c
diff options
context:
space:
mode:
authorLars Henriksen <LarsHenriksen@get2net.dk>2019-04-08 07:52:57 +0200
committerLukas Fleischer <lfleischer@calcurse.org>2019-04-13 11:58:04 +0200
commit371c7eb00f44f80cd87f3dcd72f39b62ca1d3f31 (patch)
tree602d379f439b0eb5d28cacf7e45428696733d8a1 /src/notify.c
parentc8d53972148e7713e40779e75c1932cacffd526c (diff)
downloadcalcurse-371c7eb00f44f80cd87f3dcd72f39b62ca1d3f31.tar.gz
calcurse-371c7eb00f44f80cd87f3dcd72f39b62ca1d3f31.zip
Fix display of time left before next appointment
In the notify bar, the clock is shown in hours, minutes and seconds, whereas the time left to the next appointment is shown in hours and minutes only. When you read the clock in hours and minutes (discarding the seconds), you are mentally rounding down to the nearest minute. To agree with that reading, the time left (in seconds) should be (programmatically) rounded up to the nearest minute for display. In that way the time left is counted down whenever the minute "hand" of the clock "ticks", and reaches zero when the clock reaches the time of the next appointment, not one minute before. Also, the clock (in hours and minutes) and the time left always add up to the time of the next appointment. Signed-off-by: Lars Henriksen <LarsHenriksen@get2net.dk> Signed-off-by: Lukas Fleischer <lfleischer@calcurse.org>
Diffstat (limited to 'src/notify.c')
-rw-r--r--src/notify.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/src/notify.c b/src/notify.c
index d7dc610..334468b 100644
--- a/src/notify.c
+++ b/src/notify.c
@@ -279,12 +279,14 @@ void notify_update_bar(void)
if (time_left > 0) {
int hours_left, minutes_left;
- hours_left = (time_left / HOURINSEC);
- minutes_left =
- (time_left -
- hours_left * HOURINSEC) / MININSEC;
- pthread_mutex_lock(&nbar.mutex);
+ /* In minutes rounded up. */
+ minutes_left = time_left / MININSEC +
+ (time_left % MININSEC ? 1 : 0);
+
+ hours_left = minutes_left / HOURINMIN;
+ minutes_left = minutes_left % HOURINMIN;
+ pthread_mutex_lock(&nbar.mutex);
blinking = time_left <= nbar.cntdwn && notify_trigger();
WINS_NBAR_LOCK;