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>
This commit is contained in:
parent
0ea23c24bf
commit
7f16e1c1d3
@ -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);
|
||||
|
Loading…
x
Reference in New Issue
Block a user