diff --git a/frontend/src/components/week_view.rs b/frontend/src/components/week_view.rs index e147de7..d027236 100644 --- a/frontend/src/components/week_view.rs +++ b/frontend/src/components/week_view.rs @@ -1193,6 +1193,11 @@ fn calculate_event_position(event: &VEvent, date: NaiveDate, time_increment: u32 // Check if two events overlap in time fn events_overlap(event1: &VEvent, event2: &VEvent) -> bool { + // All-day events don't overlap with timed events for width calculation purposes + if event1.all_day || event2.all_day { + return false; + } + let start1 = event1.dtstart.with_timezone(&Local).naive_local(); let end1 = if let Some(end) = event1.dtend { end.with_timezone(&Local).naive_local() @@ -1214,10 +1219,15 @@ fn events_overlap(event1: &VEvent, event2: &VEvent) -> bool { // Calculate layout columns for overlapping events fn calculate_event_layout(events: &[VEvent], date: NaiveDate, time_increment: u32) -> Vec<(usize, usize)> { - // Filter and sort events that should appear on this date + // Filter and sort events that should appear on this date (excluding all-day events) let mut day_events: Vec<_> = events.iter() .enumerate() .filter_map(|(idx, event)| { + // Skip all-day events as they don't participate in timed event overlap calculations + if event.all_day { + return None; + } + let (_, _, _) = calculate_event_position(event, date, time_increment); let local_start = event.dtstart.with_timezone(&Local); let event_date = local_start.date_naive();