diff options
Diffstat (limited to 'calendar/gui/ea-cal-view-event.c')
-rw-r--r-- | calendar/gui/ea-cal-view-event.c | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/calendar/gui/ea-cal-view-event.c b/calendar/gui/ea-cal-view-event.c index 230d7ca84f..b2bdc5c4b3 100644 --- a/calendar/gui/ea-cal-view-event.c +++ b/calendar/gui/ea-cal-view-event.c @@ -198,9 +198,17 @@ ea_cal_view_event_new (GObject *obj) &event_num, &span_num)) return NULL; + + if (!is_array_index_in_bounds (week_view->events, event_num)) + return NULL; + week_view_event = &g_array_index (week_view->events, EWeekViewEvent, event_num); + + if (!is_array_index_in_bounds (week_view->spans, week_view_event->spans_index)) + return NULL; + /* get the first span */ event_span = &g_array_index (week_view->spans, EWeekViewEventSpan, @@ -269,6 +277,8 @@ ea_cal_view_event_get_name (AtkObject *accessible) if (!g_obj || !E_IS_TEXT (g_obj)) return NULL; event = ea_calendar_helpers_get_cal_view_event_from (GNOME_CANVAS_ITEM(g_obj)); + if (!is_comp_data_valid (event)) + return NULL; alarm_string = recur_string = meeting_string = ""; if (event && event->comp_data) { @@ -445,6 +455,7 @@ ea_cal_view_get_extents (AtkComponent *component, ECalendarView *cal_view; gint item_x, item_y, item_w, item_h; GtkWidget *canvas = NULL; + GdkWindow *window; g_return_if_fail (EA_IS_CAL_VIEW_EVENT (component)); @@ -509,8 +520,8 @@ ea_cal_view_get_extents (AtkComponent *component, if (!canvas) return; - gdk_window_get_origin (canvas->window, - &x_window, &y_window); + window = gtk_widget_get_window (canvas); + gdk_window_get_origin (window, &x_window, &y_window); gnome_canvas_get_scroll_offsets (GNOME_CANVAS (canvas), &scroll_x, &scroll_y); *x = item_x + x_window - scroll_x; @@ -519,10 +530,10 @@ ea_cal_view_get_extents (AtkComponent *component, *height = item_h; if (coord_type == ATK_XY_WINDOW) { - GdkWindow *window; gint x_toplevel, y_toplevel; - window = gdk_window_get_toplevel (GTK_WIDGET (cal_view)->window); + window = gtk_widget_get_window (GTK_WIDGET (cal_view)); + window = gdk_window_get_toplevel (window); gdk_window_get_origin (window, &x_toplevel, &y_toplevel); *x -= x_toplevel; |