diff options
Diffstat (limited to 'calendar/gui/e-week-view-event-item.c')
-rw-r--r-- | calendar/gui/e-week-view-event-item.c | 39 |
1 files changed, 39 insertions, 0 deletions
diff --git a/calendar/gui/e-week-view-event-item.c b/calendar/gui/e-week-view-event-item.c index 5d3fefaaee..ba44b7a24a 100644 --- a/calendar/gui/e-week-view-event-item.c +++ b/calendar/gui/e-week-view-event-item.c @@ -132,13 +132,22 @@ week_view_event_item_double_click (EWeekViewEventItem *event_item, week_view = E_WEEK_VIEW (parent); + if (!is_array_index_in_bounds (week_view->events, event_item->priv->event_num)) + return TRUE; + event = &g_array_index ( week_view->events, EWeekViewEvent, event_item->priv->event_num); + if (!is_comp_data_valid (event)) + return TRUE; + if (week_view->editing_event_num >= 0) { EWeekViewEvent *editing; + if (!is_array_index_in_bounds (week_view->events, week_view->editing_event_num)) + return TRUE; + editing = &g_array_index ( week_view->events, EWeekViewEvent, week_view->editing_event_num); @@ -147,6 +156,7 @@ week_view_event_item_double_click (EWeekViewEventItem *event_item, * on the component, which is not on the server. */ if (editing && event && editing->comp_data == event->comp_data && + is_comp_data_valid (editing) && (!event->comp_data || !is_icalcomp_on_the_server ( event->comp_data->icalcomp, @@ -182,8 +192,15 @@ week_view_event_item_button_press (EWeekViewEventItem *event_item, week_view = E_WEEK_VIEW (parent); + if (!is_array_index_in_bounds (week_view->events, event_item->priv->event_num)) + return FALSE; + event = &g_array_index (week_view->events, EWeekViewEvent, event_item->priv->event_num); + + if (!is_array_index_in_bounds (week_view->spans, event->spans_index + event_item->priv->span_num)) + return FALSE; + span = &g_array_index (week_view->spans, EWeekViewEventSpan, event->spans_index + event_item->priv->span_num); @@ -390,8 +407,15 @@ week_view_event_item_draw_icons (EWeekViewEventItem *event_item, parent = gtk_widget_get_parent (GTK_WIDGET (canvas)); week_view = E_WEEK_VIEW (parent); + if (!is_array_index_in_bounds (week_view->events, event_item->priv->event_num)) + return; + event = &g_array_index (week_view->events, EWeekViewEvent, event_item->priv->event_num); + + if (!is_comp_data_valid (event)) + return; + comp = e_cal_component_new (); e_cal_component_set_icalcomponent ( comp, icalcomponent_new_clone (event->comp_data->icalcomp)); @@ -510,9 +534,15 @@ week_view_event_item_draw_triangle (EWeekViewEventItem *event_item, parent = gtk_widget_get_parent (GTK_WIDGET (canvas)); week_view = E_WEEK_VIEW (parent); + if (!is_array_index_in_bounds (week_view->events, event_item->priv->event_num)) + return; + event = &g_array_index (week_view->events, EWeekViewEvent, event_item->priv->event_num); + if (!is_comp_data_valid (event)) + return; + cr = gdk_cairo_create (drawable); points[0].x = x; @@ -716,13 +746,22 @@ week_view_event_item_draw (GnomeCanvasItem *canvas_item, g_return_if_fail (event_item->priv->event_num < week_view->events->len); + if (!is_array_index_in_bounds (week_view->events, event_item->priv->event_num)) + return; + event = &g_array_index (week_view->events, EWeekViewEvent, event_item->priv->event_num); + if (!is_comp_data_valid (event)) + return; + g_return_if_fail ( event->spans_index + event_item->priv->span_num < week_view->spans->len); + if (!is_array_index_in_bounds (week_view->spans, event->spans_index + event_item->priv->span_num)) + return; + span = &g_array_index (week_view->spans, EWeekViewEventSpan, event->spans_index + event_item->priv->span_num); |