summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLukas Fleischer <calcurse@cryptocrack.de>2012-11-26 02:01:56 +0100
committerLukas Fleischer <calcurse@cryptocrack.de>2012-11-26 02:04:19 +0100
commit7f16e1c1d30f56d796b1e7f2286c9ccfdd97061f (patch)
treefeaf86d8b939af754858933c24927d0f8be8f62e
parent0ea23c24bf06e153bb075804e195e1733fd67d3f (diff)
downloadcalcurse-7f16e1c1d30f56d796b1e7f2286c9ccfdd97061f.zip
day.c: Fix weekly view
Calculate busy slices correctly if (recurrent) appointments with a duration of more than 24 hours are used. Signed-off-by: Lukas Fleischer <calcurse@cryptocrack.de>
-rw-r--r--src/day.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/day.c b/src/day.c
index 29c03e4..70f1400 100644
--- a/src/day.c
+++ b/src/day.c
@@ -507,6 +507,11 @@ unsigned day_chk_busy_slices(struct date day, int slicesno, int *slices)
long start = get_item_time(rapt->start);
long end = get_item_time(rapt->start + rapt->dur);
+ if (rapt->start < date)
+ start = 0;
+ if (rapt->start + rapt->dur >= date + DAYINSEC)
+ end = DAYINSEC - 1;
+
if (!fill_slices(slices, slicesno, SLICENUM(start), SLICENUM(end))) {
LLIST_TS_UNLOCK(&recur_alist_p);
return 0;
@@ -522,6 +527,10 @@ unsigned day_chk_busy_slices(struct date day, int slicesno, int *slices)
if (apt->start >= date + DAYINSEC)
break;
+ if (apt->start < date)
+ start = 0;
+ if (apt->start + apt->dur >= date + DAYINSEC)
+ end = DAYINSEC - 1;
if (!fill_slices(slices, slicesno, SLICENUM(start), SLICENUM(end))) {
LLIST_TS_UNLOCK(&alist_p);