diff options
author | Lukas Fleischer <calcurse@cryptocrack.de> | 2012-11-26 02:01:56 +0100 |
---|---|---|
committer | Lukas Fleischer <calcurse@cryptocrack.de> | 2012-11-26 02:04:19 +0100 |
commit | 7f16e1c1d30f56d796b1e7f2286c9ccfdd97061f (patch) | |
tree | feaf86d8b939af754858933c24927d0f8be8f62e | |
parent | 0ea23c24bf06e153bb075804e195e1733fd67d3f (diff) | |
download | calcurse-7f16e1c1d30f56d796b1e7f2286c9ccfdd97061f.tar.gz calcurse-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.c | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -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); |