diff options
Diffstat (limited to 'calendar/gui/e-day-view.c')
-rw-r--r-- | calendar/gui/e-day-view.c | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/calendar/gui/e-day-view.c b/calendar/gui/e-day-view.c index 80b79bf2f5..77343b4763 100644 --- a/calendar/gui/e-day-view.c +++ b/calendar/gui/e-day-view.c @@ -3255,6 +3255,8 @@ e_day_view_on_event_click (EDayView *day_view, day_view->resize_drag_pos = pos; day_view->resize_start_row = event->start_minute / day_view->mins_per_row; day_view->resize_end_row = (event->end_minute - 1) / day_view->mins_per_row; + if (day_view->resize_end_row < day_view->resize_start_row) + day_view->resize_end_row = day_view->resize_start_row; day_view->resize_bars_event_day = day; day_view->resize_bars_event_num = event_num; @@ -3526,8 +3528,27 @@ e_day_view_on_new_appointment (GtkWidget *widget, gpointer data) { EDayView *day_view = E_DAY_VIEW (data); time_t dtstart, dtend; + struct icaltimetype itt; - e_day_view_get_selected_time_range (day_view, &dtstart, &dtend); + /* Edit a new event. If only one day is selected in the top canvas, + we set the time to the first 1/2-hour of the working day. */ + if (day_view->selection_in_top_canvas + && day_view->selection_start_day != -1 + && day_view->selection_start_day == day_view->selection_end_day) { + dtstart = day_view->day_starts[day_view->selection_start_day]; + itt = icaltime_from_timet_with_zone (dtstart, FALSE, + day_view->zone); + itt.hour = calendar_config_get_day_start_hour (); + itt.minute = calendar_config_get_day_start_minute (); + dtstart = icaltime_as_timet_with_zone (itt, day_view->zone); + + icaltime_adjust (&itt, 0, 0, 30, 0); + dtend = icaltime_as_timet_with_zone (itt, day_view->zone); + } else { + e_day_view_get_selected_time_range (day_view, &dtstart, + &dtend); + } + gnome_calendar_new_appointment_for ( day_view->calendar, dtstart, dtend, FALSE); } @@ -5834,6 +5855,9 @@ e_day_view_get_event_position (EDayView *day_view, start_row = event->start_minute / day_view->mins_per_row; end_row = (event->end_minute - 1) / day_view->mins_per_row; + if (end_row < start_row) + end_row = start_row; + cols_in_row = day_view->cols_per_row[day][start_row]; start_col = event->start_row_or_col; num_columns = event->num_columns; @@ -6320,6 +6344,9 @@ e_day_view_update_main_canvas_drag (EDayView *day_view, day_view->drag_event_num); start_row = event->start_minute / day_view->mins_per_row; end_row = (event->end_minute - 1) / day_view->mins_per_row; + if (end_row < start_row) + end_row = start_row; + num_rows = end_row - start_row + 1; } @@ -6690,6 +6717,9 @@ e_day_view_on_main_canvas_drag_data_received (GtkWidget *widget, /* Calculate time offset from start row. */ start_row = event->start_minute / day_view->mins_per_row; end_row = (event->end_minute - 1) / day_view->mins_per_row; + if (end_row < start_row) + end_row = start_row; + num_rows = end_row - start_row + 1; start_offset = event->start_minute % day_view->mins_per_row; |