static AtkObject * etcta_ref_child (AtkObject *accessible, gint i) { AtkObject * atk_obj = NULL; ETableClickToAdd * etcta; if (i != 0) return NULL; etcta = E_TABLE_CLICK_TO_ADD ( atk_gobject_accessible_get_object ( ATK_GOBJECT_ACCESSIBLE (accessible))); g_return_val_if_fail (etcta, NULL); if (etcta->rect) { atk_obj = atk_gobject_accessible_for_object ( G_OBJECT (etcta->rect)); } else if (etcta->row) { atk_obj = atk_gobject_accessible_for_object ( G_OBJECT (etcta->row)); } g_object_ref (atk_obj); return atk_obj; }
static gboolean ea_addressbook_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_MINICARD (object)) { GnomeCanvasItem *item = GNOME_CANVAS_ITEM (object); ea_event = atk_gobject_accessible_for_object (object); if (event->type == GDK_FOCUS_CHANGE) { if (E_IS_MINICARD (item->canvas->focused_item)) atk_object_notify_state_change (ea_event, ATK_STATE_FOCUSED, event->focus_change.in); } } return TRUE; }
static AtkObject* goo_canvas_accessible_ref_child (AtkObject *object, gint child_num) { GtkAccessible *accessible; GtkWidget *widget; GooCanvasItem *root; AtkObject *atk_object; /* Canvas only has one child, so return NULL if index is non zero */ if (child_num != 0) return NULL; accessible = GTK_ACCESSIBLE (object); widget = accessible->widget; /* Check if widget still exists. */ if (widget == NULL) return NULL; root = goo_canvas_get_root_item (GOO_CANVAS (widget)); if (!root) return NULL; atk_object = atk_gobject_accessible_for_object (G_OBJECT (root)); g_object_ref (atk_object); return atk_object; }
static AtkObject* goo_canvas_item_accessible_ref_child (AtkObject *accessible, gint child_num) { GooCanvasItem *item, *child; AtkObject *atk_object; GObject *object; g_return_val_if_fail (GOO_IS_CANVAS_ITEM_ACCESSIBLE (accessible), NULL); object = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE (accessible)); if (object == NULL) return NULL; item = GOO_CANVAS_ITEM (object); child = goo_canvas_item_get_child (item, child_num); if (!child) return NULL; atk_object = atk_gobject_accessible_for_object (G_OBJECT (child)); g_object_ref (atk_object); return atk_object; }
static AtkObject* goo_canvas_item_accessible_get_parent (AtkObject *accessible) { GooCanvasItem *item, *parent; GooCanvas *canvas; GObject *object; g_return_val_if_fail (GOO_IS_CANVAS_ITEM_ACCESSIBLE (accessible), NULL); if (accessible->accessible_parent) return accessible->accessible_parent; object = atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE (accessible)); if (object == NULL) return NULL; item = GOO_CANVAS_ITEM (object); parent = goo_canvas_item_get_parent (item); if (parent) return atk_gobject_accessible_for_object (G_OBJECT (parent)); canvas = goo_canvas_item_get_canvas (item); if (canvas) return gtk_widget_get_accessible (GTK_WIDGET (canvas)); return NULL; }
/** * eel_accessibilty_for_object: * @object: a GObject of some sort * * gets an AtkObject associated with a GObject and if it doesn't * exist creates a suitable accessible object. * * Return value: an associated accessible. **/ AtkObject * eel_accessibility_for_object (gpointer object) { if (GTK_IS_WIDGET (object)) return gtk_widget_get_accessible (object); return atk_gobject_accessible_for_object (object); }
static gboolean set_text_press_cb (ClutterActor *actor, ClutterButtonEvent *event, gpointer data) { AtkObject *object = NULL; AtkEditableText *cally_editable_text = NULL; object = atk_gobject_accessible_for_object (G_OBJECT (text_editable_actor)); cally_editable_text = ATK_EDITABLE_TEXT (object); atk_editable_text_set_text_contents (cally_editable_text, "New text"); return TRUE; }
static void eti_tree_model_node_changed_cb (ETreeModel *model, ETreePath node, ETableItem *eti) { AtkObject *atk_obj; GalA11yETableItem *a11y; g_return_if_fail (E_IS_TABLE_ITEM (eti)); atk_obj = atk_gobject_accessible_for_object (G_OBJECT (eti)); a11y = GAL_A11Y_E_TABLE_ITEM (atk_obj); /* we can't figure out which rows are changed, so just send out a signal ... */ if (GET_PRIVATE (a11y)->rows > 0) g_signal_emit_by_name (a11y, "visible-data-changed"); }
static gboolean insert_text_press_cb (ClutterActor *actor, ClutterButtonEvent *event, gpointer data) { AtkObject *object = NULL; AtkEditableText *cally_editable_text = NULL; gint pos = 0; object = atk_gobject_accessible_for_object (G_OBJECT (text_editable_actor)); cally_editable_text = ATK_EDITABLE_TEXT (object); pos = 3; atk_editable_text_insert_text (cally_editable_text, "New", 0, &pos); return TRUE; }
static AtkObject * ea_day_view_main_item_ref_child (AtkObject *accessible, gint index) { AtkGObjectAccessible *atk_gobj; GObject *g_obj; EDayViewMainItem *main_item; EDayView *day_view; gint n_children; EDayViewCell *cell; EaCellTable *cell_data; EaDayViewMainItem *ea_main_item; g_return_val_if_fail (EA_IS_DAY_VIEW_MAIN_ITEM (accessible), NULL); atk_gobj = ATK_GOBJECT_ACCESSIBLE (accessible); g_obj = atk_gobject_accessible_get_object (atk_gobj); if (!g_obj) return NULL; main_item = E_DAY_VIEW_MAIN_ITEM (g_obj); day_view = e_day_view_main_item_get_day_view (main_item); n_children = ea_day_view_main_item_get_n_children (accessible); if (index < 0 || index >= n_children) return NULL; ea_main_item = EA_DAY_VIEW_MAIN_ITEM (accessible); cell_data = ea_day_view_main_item_get_cell_data (ea_main_item); if (!cell_data) return NULL; cell = ea_cell_table_get_cell_at_index (cell_data, index); if (!cell) { gint row, column; row = ea_day_view_main_item_get_row_at_index (ea_main_item, index); column = ea_day_view_main_item_get_column_at_index (ea_main_item, index); cell = e_day_view_cell_new (day_view, row, column); ea_cell_table_set_cell_at_index (cell_data, index, cell); g_object_unref (cell); } return g_object_ref (atk_gobject_accessible_for_object (G_OBJECT (cell))); }
/* * Test AtkText interface */ static void test_atk_text (ClutterActor *actor) { AtkObject *object = NULL; AtkEditableText *cally_editable_text = NULL; gint pos = 0; object = atk_gobject_accessible_for_object (G_OBJECT (actor)); cally_editable_text = ATK_EDITABLE_TEXT (object); if (cally_editable_text != NULL) { atk_editable_text_set_text_contents (cally_editable_text, "New text"); atk_editable_text_delete_text (cally_editable_text, 0, 3); pos = 3; atk_editable_text_insert_text (cally_editable_text, "New", 0, &pos); /* Not implemented in cally, just checking that we can call this functions */ atk_editable_text_copy_text (cally_editable_text, 0, -1); atk_editable_text_paste_text (cally_editable_text, 5); atk_editable_text_cut_text (cally_editable_text, 0, -1); } }
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; }
static AtkObject* gail_get_accessible_for_widget (GtkWidget *widget, gboolean *transient) { AtkObject *obj = NULL; GType gnome_canvas; gnome_canvas = g_type_from_name ("GnomeCanvas"); *transient = FALSE; if (!widget) return NULL; if (GTK_IS_ENTRY (widget)) { GtkWidget *other_widget = widget->parent; if (GTK_IS_COMBO (other_widget)) { gail_set_focus_widget (other_widget, widget); widget = other_widget; } } else if (GTK_IS_NOTEBOOK (widget)) { GtkNotebook *notebook; gint page_num = -1; notebook = GTK_NOTEBOOK (widget); /* * Report the currently focused tab rather than the currently selected tab */ if (notebook->focus_tab) { page_num = g_list_index (notebook->children, notebook->focus_tab->data); } if (page_num != -1) { obj = gtk_widget_get_accessible (widget); obj = atk_object_ref_accessible_child (obj, page_num); g_object_unref (obj); } } else if (GTK_CHECK_TYPE ((widget), gnome_canvas)) { GObject *focused_item; GValue value = {0, }; g_value_init (&value, G_TYPE_OBJECT); g_object_get_property (G_OBJECT (widget), "focused_item", &value); focused_item = g_value_get_object (&value); if (focused_item) { AtkObject *tmp; obj = atk_gobject_accessible_for_object (G_OBJECT (focused_item)); tmp = g_object_get_qdata (G_OBJECT (obj), quark_focus_object); if (tmp != NULL) obj = tmp; } } else if (GTK_IS_TOGGLE_BUTTON (widget)) { GtkWidget *other_widget = widget->parent; if (GTK_IS_COMBO_BOX (other_widget)) { gail_set_focus_widget (other_widget, widget); widget = other_widget; } } if (obj == NULL) { AtkObject *focus_object; obj = gtk_widget_get_accessible (widget); focus_object = g_object_get_qdata (G_OBJECT (obj), quark_focus_object); /* * We check whether the object for this focus_object has been deleted. * This can happen when navigating to an empty directory in nautilus. * See bug #141907. */ if (ATK_IS_GOBJECT_ACCESSIBLE (focus_object)) { if (!atk_gobject_accessible_get_object (ATK_GOBJECT_ACCESSIBLE (focus_object))) focus_object = NULL; } if (focus_object) obj = focus_object; } return obj; }