AtkObject * ea_day_view_main_item_new (GObject *obj) { AtkObject *accessible; GnomeCalendar *gcal; EDayViewMainItem *main_item; EDayView *day_view; g_return_val_if_fail (E_IS_DAY_VIEW_MAIN_ITEM (obj), NULL); accessible = ATK_OBJECT ( g_object_new (EA_TYPE_DAY_VIEW_MAIN_ITEM, NULL)); atk_object_initialize (accessible, obj); accessible->role = ATK_ROLE_TABLE; #ifdef ACC_DEBUG ++n_ea_day_view_main_item_created; printf ( "ACC_DEBUG: n_ea_day_view_main_item_created = %d\n", n_ea_day_view_main_item_created); #endif main_item = E_DAY_VIEW_MAIN_ITEM (obj); day_view = e_day_view_main_item_get_day_view (main_item); g_signal_connect ( day_view, "selected_time_changed", G_CALLBACK (ea_day_view_main_item_time_change_cb), accessible); /* listen for date changes of calendar */ gcal = e_calendar_view_get_calendar (E_CALENDAR_VIEW (day_view)); if (gcal) g_signal_connect ( gcal, "dates_shown_changed", G_CALLBACK (ea_day_view_main_item_dates_change_cb), accessible); return accessible; }
static gboolean ea_calendar_focus_watcher (GSignalInvocationHint *ihint, guint n_param_values, const GValue *param_values, gpointer data) { GObject *object; GdkEvent *event; AtkObject *ea_event = NULL; object = g_value_get_object (param_values + 0); event = g_value_get_boxed (param_values + 1); if ((E_IS_TEXT (object)) || (GNOME_IS_CANVAS_PIXBUF (object))) { /* "event" signal on canvas item */ GnomeCanvasItem *canvas_item; canvas_item = GNOME_CANVAS_ITEM (object); if (event->type == GDK_FOCUS_CHANGE) { if (event->focus_change.in) { ea_event = ea_calendar_helpers_get_accessible_for (canvas_item); if (!ea_event) /* not canvas item we want */ return TRUE; } atk_focus_tracker_notify (ea_event); } } else if (E_IS_DAY_VIEW (object)) { EDayView *day_view = E_DAY_VIEW (object); if (event->type == GDK_FOCUS_CHANGE) { if (event->focus_change.in) { /* give main item chance to emit focus */ gnome_canvas_item_grab_focus (day_view->main_canvas_item); } } } else if (E_IS_DAY_VIEW_MAIN_ITEM (object)) { if (event->type == GDK_FOCUS_CHANGE) { if (event->focus_change.in) { /* we should emit focus on main item */ ea_event = atk_gobject_accessible_for_object (object); } else /* focus out */ ea_event = NULL; #ifdef ACC_DEBUG printf ("EvoAcc: focus notify on day main item %p\n", (void *)object); #endif atk_focus_tracker_notify (ea_event); } } else if (E_IS_WEEK_VIEW (object)) { EWeekView *week_view = E_WEEK_VIEW (object); if (event->type == GDK_FOCUS_CHANGE) { if (event->focus_change.in) { /* give main item chance to emit focus */ gnome_canvas_item_grab_focus (week_view->main_canvas_item); } } } else if (E_IS_WEEK_VIEW_MAIN_ITEM (object)) { if (event->type == GDK_FOCUS_CHANGE) { if (event->focus_change.in) { /* we should emit focus on main item */ ea_event = atk_gobject_accessible_for_object (object); } else /* focus out */ ea_event = NULL; #ifdef ACC_DEBUG printf ("EvoAcc: focus notify on week main item %p\n", (void *)object); #endif atk_focus_tracker_notify (ea_event); } } return TRUE; }