diff --git a/frontend/src/components/week_view.rs b/frontend/src/components/week_view.rs index 772356c..6a5f366 100644 --- a/frontend/src/components/week_view.rs +++ b/frontend/src/components/week_view.rs @@ -399,6 +399,13 @@ pub fn week_view(props: &WeekViewProps) -> Html { let drag_state = drag_state_clone.clone(); let time_increment = props.time_increment; Callback::from(move |e: MouseEvent| { + // Only process mouse move if a button is still pressed + if e.buttons() == 0 { + // No mouse button pressed, clear drag state + drag_state.set(None); + return; + } + if let Some(mut current_drag) = (*drag_state).clone() { if current_drag.is_dragging { // Use layer_y for consistent coordinate calculation @@ -568,9 +575,20 @@ pub fn week_view(props: &WeekViewProps) -> Html { }) }; + // Check if currently dragging to create an event + let is_creating_event = if let Some(drag) = (*drag_state).clone() { + matches!(drag.drag_type, DragType::CreateEvent) && drag.is_dragging + } else { + false + }; + html! {
Html { // Temporary event box during drag { if let Some(drag) = (*drag_state).clone() { - if drag.is_dragging && drag.start_date == *date { + if drag.is_dragging && drag.has_moved && drag.start_date == *date { match &drag.drag_type { DragType::CreateEvent => { let start_y = drag.start_y.min(drag.current_y); diff --git a/frontend/styles.css b/frontend/styles.css index c517ca3..879bbda 100644 --- a/frontend/styles.css +++ b/frontend/styles.css @@ -802,6 +802,20 @@ body { white-space: nowrap; } +/* Disable pointer events on existing events when creating a new event */ +.week-day-column.creating-event .week-event { + pointer-events: none; + opacity: 0.6; /* Visual feedback that events are not interactive */ +} + +.week-day-column.creating-event .week-event .event-content { + pointer-events: none; +} + +.week-day-column.creating-event .week-event .resize-handle { + pointer-events: none; +} + .week-event:hover { filter: brightness(1.1); z-index: 4;