static void _do_test(AtkObject *obj) { AtkStateSet *state_set; g_assert(ATK_IS_ACTION(obj)); /* atk_action_get_n_actions test */ g_assert(atk_action_get_n_actions(ATK_ACTION(obj)) == 2); eailu_test_action_activate(ATK_ACTION(obj), "shrink"); state_set = atk_object_ref_state_set(obj); g_assert(atk_state_set_contains_state(state_set, ATK_STATE_DEFAULT)); g_object_unref(state_set); eailu_test_action_activate(ATK_ACTION(obj), "expand"); state_set = atk_object_ref_state_set(obj); g_assert(atk_state_set_contains_state(state_set, ATK_STATE_EXPANDED)); g_object_unref(state_set); eailu_test_action_description_all(ATK_ACTION(obj)); g_assert((eailu_get_action_number(ATK_ACTION(obj), "typo")) == -1); _printf("DONE. All multibutton_entry tests passed successfully \n"); eailu_test_code_called = 1; }
static void _do_test(AtkObject *obj) { const char *type_name = g_type_name(G_TYPE_FROM_INSTANCE(obj)); AtkStateSet *state_set = atk_object_ref_state_set(obj); g_assert_cmpstr(type_name, ==, "EailLabel"); /** * AtkText tests */ g_assert(ATK_IS_TEXT(obj)); g_assert(atk_state_set_contains_state(state_set, ATK_STATE_MULTI_LINE)); g_object_unref(state_set); /* atk_text_get_text */ gchar *text = atk_text_get_text(ATK_TEXT(obj), 6, 11); g_assert_cmpstr(text, ==, "ipsum"); g_free(text); /* atk_text_get_character_at_offset */ g_assert(atk_text_get_character_at_offset(ATK_TEXT(obj), 12) == 'd'); /* atk_text_get_character_count */ g_assert(atk_text_get_character_count(ATK_TEXT(obj)) == 440); }
static void gtk_icon_view_item_accessible_get_image_size (AtkImage *image, gint *width, gint *height) { GtkIconViewItemAccessible *item; GdkRectangle box; item = GTK_ICON_VIEW_ITEM_ACCESSIBLE (image); if (!GTK_IS_ICON_VIEW (item->widget)) return; if (atk_state_set_contains_state (item->state_set, ATK_STATE_DEFUNCT)) return; *width = 0; *height = 0; if (get_pixbuf_box (GTK_ICON_VIEW (item->widget), item->item, &box)) { *width = box.width; *height = box.height; } }
static void gtk_icon_view_item_accessible_get_image_position (AtkImage *image, gint *x, gint *y, AtkCoordType coord_type) { GtkIconViewItemAccessible *item; GdkRectangle box; item = GTK_ICON_VIEW_ITEM_ACCESSIBLE (image); if (!GTK_IS_ICON_VIEW (item->widget)) return; if (atk_state_set_contains_state (item->state_set, ATK_STATE_DEFUNCT)) return; atk_component_get_position (ATK_COMPONENT (image), x, y, coord_type); if (get_pixbuf_box (GTK_ICON_VIEW (item->widget), item->item, &box)) { *x+= box.x - item->item->cell_area.x; *y+= box.y - item->item->cell_area.y; } }
static gboolean gtk_icon_view_item_accessible_remove_state (GtkIconViewItemAccessible *item, AtkStateType state_type, gboolean emit_signal) { if (atk_state_set_contains_state (item->state_set, state_type)) { gboolean rc; rc = atk_state_set_remove_state (item->state_set, state_type); /* The signal should only be generated if the value changed, * not when the item is set up. So states that are set * initially should pass FALSE as the emit_signal argument. */ if (emit_signal) { atk_object_notify_state_change (ATK_OBJECT (item), state_type, FALSE); /* If state_type is ATK_STATE_VISIBLE, additional notification */ if (state_type == ATK_STATE_VISIBLE) g_signal_emit_by_name (item, "visible-data-changed"); } return rc; } else return FALSE; }
static AtkStateSet * gtk_menu_item_accessible_ref_state_set (AtkObject *obj) { AtkObject *menu_item; AtkStateSet *state_set, *parent_state_set; state_set = ATK_OBJECT_CLASS (_gtk_menu_item_accessible_parent_class)->ref_state_set (obj); menu_item = atk_object_get_parent (obj); if (menu_item) { if (!GTK_IS_MENU_ITEM (gtk_accessible_get_widget (GTK_ACCESSIBLE (menu_item)))) return state_set; parent_state_set = atk_object_ref_state_set (menu_item); if (!atk_state_set_contains_state (parent_state_set, ATK_STATE_SELECTED)) { atk_state_set_remove_state (state_set, ATK_STATE_FOCUSED); atk_state_set_remove_state (state_set, ATK_STATE_SHOWING); } g_object_unref (parent_state_set); } return state_set; }
static void _print_states (AtkObject *obj) { AtkStateSet *state_set; gint i; state_set = atk_object_ref_state_set (obj); g_print ("*** Start states ***\n"); for (i = 0; i < 64; i++) { AtkStateType one_state; G_CONST_RETURN gchar *name; if (atk_state_set_contains_state (state_set, i)) { one_state = i; name = atk_state_type_get_name (one_state); if (name) g_print("%s\n", name); } } g_object_unref (state_set); g_print ("*** End states ***\n"); }
gboolean gucharmap_chartable_cell_accessible_remove_state (GucharmapChartableCellAccessible *cell, AtkStateType state_type, gboolean emit_signal) { if (atk_state_set_contains_state (cell->state_set, state_type)) { gboolean rc; rc = atk_state_set_remove_state (cell->state_set, state_type); /* * The signal should only be generated if the value changed, * not when the cell is set up. So states that are set * initially should pass FALSE as the emit_signal argument. */ if (emit_signal) { atk_object_notify_state_change (ATK_OBJECT (cell), state_type, FALSE); /* If state_type is ATK_STATE_VISIBLE, additional notification */ if (state_type == ATK_STATE_VISIBLE) g_signal_emit_by_name (cell, "visible_data_changed"); } return rc; } else return FALSE; }
static gint table_get_selected_rows (AtkTable *table, gint **rows_selected) { ETableItem *item; gint n_selected, row, index_selected; GalA11yETableItemPrivate *priv = GET_PRIVATE (table); if (atk_state_set_contains_state (priv->state_set, ATK_STATE_DEFUNCT)) return 0; item = E_TABLE_ITEM (eti_a11y_get_gobject (ATK_OBJECT (table))); if (!item) return 0; n_selected = e_selection_model_selected_count (item->selection); if (rows_selected) { *rows_selected = (gint *) g_malloc (n_selected * sizeof (gint)); index_selected = 0; for (row = 0; row < item->rows && index_selected < n_selected; ++row) { if (atk_table_is_row_selected (table, row)) { (*rows_selected)[index_selected] = row; ++index_selected; } } } return n_selected; }
static bool checkElementState(PlatformUIElement element, AtkStateType stateType) { if (!ATK_IS_OBJECT(element)) return false; GRefPtr<AtkStateSet> stateSet = adoptGRef(atk_object_ref_state_set(ATK_OBJECT(element))); return atk_state_set_contains_state(stateSet.get(), stateType); }
static void _do_test(AtkObject *obj) { const char *type_name = g_type_name(G_TYPE_FROM_INSTANCE(obj)); const char *name = atk_object_get_name(ATK_OBJECT(obj)); const char *type_name_child; AtkStateSet *state_set; AtkObject *xobj; _printf("type_name: %s\n", type_name ? type_name : "NULL"); g_assert(name); _printf("name: %s\n", name); g_assert_cmpstr(type_name, ==, "EailCheck"); g_assert(ATK_IS_OBJECT(obj)); g_assert(ATK_IS_ACTION(obj)); g_assert(ATK_IS_TEXT(obj)); state_set = atk_object_ref_state_set(obj); if (!strcmp(name, CHECK_TEXT1)) { _printf("check test: %s\n", CHECK_TEXT1); g_assert(atk_state_set_contains_state(state_set, ATK_STATE_CHECKED)); // test children g_assert(0 == atk_object_get_n_accessible_children(obj)); } else if (!strcmp(name, CHECK_TEXT2)) { _printf("check test: %s\n", CHECK_TEXT2); g_assert(!atk_state_set_contains_state(state_set, ATK_STATE_CHECKED)); // test children g_assert(1 == atk_object_get_n_accessible_children(obj)); xobj = atk_object_ref_accessible_child(obj, 0); g_assert(NULL != xobj); type_name_child = g_type_name(G_TYPE_FROM_INSTANCE(xobj)); _printf("type_name_child: %s\n", type_name_child); g_assert_cmpstr(type_name_child, ==, "EailIcon"); }
void _test_state(AtkObject *obj, AtkStateType state_type) { AtkStateSet *state_set; state_set = atk_object_ref_state_set(obj); g_assert(atk_state_set_contains_state(state_set, state_type)); g_object_unref(state_set); }
/* page accessible's state set is a copy ev-view accessible's state * set but removing ATK_STATE_SHOWING if the page is not on screen and * ATK_STATE_FOCUSED if it is not the relevant page. */ static AtkStateSet * ev_page_accessible_ref_state_set (AtkObject *accessible) { AtkStateSet *state_set; AtkStateSet *copy_set; AtkStateSet *view_accessible_state_set; EvPageAccessible *self; EvView *view; gint relevant_page; g_return_val_if_fail (EV_IS_PAGE_ACCESSIBLE (accessible), NULL); self = EV_PAGE_ACCESSIBLE (accessible); view = ev_page_accessible_get_view (self); state_set = ATK_OBJECT_CLASS (ev_page_accessible_parent_class)->ref_state_set (accessible); atk_state_set_clear_states (state_set); view_accessible_state_set = atk_object_ref_state_set (ATK_OBJECT (self->priv->view_accessible)); copy_set = atk_state_set_or_sets (state_set, view_accessible_state_set); if (self->priv->page >= view->start_page && self->priv->page <= view->end_page) atk_state_set_add_state (copy_set, ATK_STATE_SHOWING); else atk_state_set_remove_state (copy_set, ATK_STATE_SHOWING); relevant_page = ev_view_accessible_get_relevant_page (self->priv->view_accessible); if (atk_state_set_contains_state (view_accessible_state_set, ATK_STATE_FOCUSED) && self->priv->page == relevant_page) atk_state_set_add_state (copy_set, ATK_STATE_FOCUSED); else atk_state_set_remove_state (copy_set, ATK_STATE_FOCUSED); relevant_page = ev_view_accessible_get_relevant_page (self->priv->view_accessible); if (atk_state_set_contains_state (view_accessible_state_set, ATK_STATE_FOCUSED) && self->priv->page == relevant_page) atk_state_set_add_state (copy_set, ATK_STATE_FOCUSED); else atk_state_set_remove_state (copy_set, ATK_STATE_FOCUSED); g_object_unref (state_set); g_object_unref (view_accessible_state_set); return copy_set; }
static void state_change_cb (AtkObject *obj, const gchar *name, gboolean state_set) { AtkStateSet *set; set = atk_object_ref_state_set (obj); g_print ("accessible %s %p focused -> %d\n", get_name (obj), obj, atk_state_set_contains_state (set, ATK_STATE_FOCUSED)); g_object_unref (set); }
bool AccessibilityUIElement::isChecked() const { if (!ATK_IS_OBJECT(m_element)) return false; GRefPtr<AtkStateSet> stateSet = adoptGRef(atk_object_ref_state_set(ATK_OBJECT(m_element))); gboolean isChecked = atk_state_set_contains_state(stateSet.get(), ATK_STATE_CHECKED); return isChecked; }
bool AccessibilityUIElement::isFocusable() const { if (!ATK_IS_OBJECT(m_element)) return false; GRefPtr<AtkStateSet> stateSet = adoptGRef(atk_object_ref_state_set(ATK_OBJECT(m_element))); gboolean isFocusable = atk_state_set_contains_state(stateSet.get(), ATK_STATE_FOCUSABLE); return isFocusable; }
static gboolean is_valid (AtkObject *cell) { GalA11yECell *a11y = GAL_A11Y_E_CELL (cell); GalA11yETableItem *a11yItem = GAL_A11Y_E_TABLE_ITEM (a11y->parent); AtkStateSet *item_ss; gboolean ret = TRUE; item_ss = atk_object_ref_state_set (ATK_OBJECT (a11yItem)); if (atk_state_set_contains_state (item_ss, ATK_STATE_DEFUNCT)) ret = FALSE; g_object_unref (item_ss); if (ret && atk_state_set_contains_state (a11y->state_set, ATK_STATE_DEFUNCT)) ret = FALSE; return ret; }
bool AccessibilityUIElement::isSelected() const { if (!ATK_IS_OBJECT(m_element)) return false; PlatformRefPtr<AtkStateSet> stateSet = adoptPlatformRef(atk_object_ref_state_set(ATK_OBJECT(m_element))); gboolean isSelected = atk_state_set_contains_state(stateSet.get(), ATK_STATE_SELECTED); return isSelected; }
static AtkStateSet * gtk_notebook_page_accessible_ref_state_set (AtkObject *accessible) { AtkStateSet *state_set, *label_state_set, *merged_state_set; AtkObject *atk_label; GtkWidget *label; state_set = ATK_OBJECT_CLASS (_gtk_notebook_page_accessible_parent_class)->ref_state_set (accessible); label = get_label_from_notebook_page (GTK_NOTEBOOK_PAGE_ACCESSIBLE (accessible)); if (label) { atk_label = gtk_widget_get_accessible (label); label_state_set = atk_object_ref_state_set (atk_label); merged_state_set = atk_state_set_or_sets (state_set, label_state_set); g_object_unref (label_state_set); g_object_unref (state_set); } else { AtkObject *child; child = atk_object_ref_accessible_child (accessible, 0); if (!child) return state_set; merged_state_set = state_set; state_set = atk_object_ref_state_set (child); if (atk_state_set_contains_state (state_set, ATK_STATE_VISIBLE)) { atk_state_set_add_state (merged_state_set, ATK_STATE_VISIBLE); if (atk_state_set_contains_state (state_set, ATK_STATE_ENABLED)) atk_state_set_add_state (merged_state_set, ATK_STATE_ENABLED); if (atk_state_set_contains_state (state_set, ATK_STATE_SHOWING)) atk_state_set_add_state (merged_state_set, ATK_STATE_SHOWING); } g_object_unref (state_set); g_object_unref (child); } return merged_state_set; }
static AtkObject * gtk_html_a11y_ref_child (AtkObject *accessible, gint index) { HTMLObject *child; AtkObject *accessible_child = NULL; AtkStateSet *ss; if (GTK_HTML_A11Y_GTKHTML (accessible)->engine->parsing) return NULL; ss = atk_object_ref_state_set (accessible); if (atk_state_set_contains_state (ss, ATK_STATE_DEFUNCT)) { g_object_unref (ss); return NULL; } g_object_unref (ss); if (GTK_HTML_A11Y_GTKHTML (accessible)->engine->clue) { AtkObject *atk_clue = html_utils_get_accessible (GTK_HTML_A11Y_GTKHTML (accessible)->engine->clue, NULL); if (atk_clue) { AtkStateSet *ss_clue = atk_object_ref_state_set (atk_clue); if (atk_state_set_contains_state (ss_clue, ATK_STATE_DEFUNCT)) { g_object_unref (ss_clue); return NULL; } g_object_unref (ss_clue); } child = html_object_get_child (GTK_HTML_A11Y_GTKHTML (accessible)->engine->clue, index); if (child) { accessible_child = html_utils_get_accessible (child, accessible); if (accessible_child) g_object_ref (accessible_child); } } /* printf ("gtk_html_a11y_ref_child %d resolves to %p\n", index, accessible_child); */ return accessible_child; }
static AtkStateSet* gail_notebook_page_ref_state_set (AtkObject *accessible) { AtkStateSet *state_set, *label_state_set, *merged_state_set; AtkObject *atk_label; g_return_val_if_fail (GAIL_NOTEBOOK_PAGE (accessible), NULL); state_set = ATK_OBJECT_CLASS (gail_notebook_page_parent_class)->ref_state_set (accessible); atk_label = _gail_notebook_page_get_tab_label (GAIL_NOTEBOOK_PAGE (accessible)); if (atk_label) { label_state_set = atk_object_ref_state_set (atk_label); merged_state_set = atk_state_set_or_sets (state_set, label_state_set); g_object_unref (label_state_set); g_object_unref (state_set); } else { AtkObject *child; child = atk_object_ref_accessible_child (accessible, 0); gail_return_val_if_fail (child, state_set); merged_state_set = state_set; state_set = atk_object_ref_state_set (child); if (atk_state_set_contains_state (state_set, ATK_STATE_VISIBLE)) { atk_state_set_add_state (merged_state_set, ATK_STATE_VISIBLE); if (atk_state_set_contains_state (state_set, ATK_STATE_ENABLED)) atk_state_set_add_state (merged_state_set, ATK_STATE_ENABLED); if (atk_state_set_contains_state (state_set, ATK_STATE_SHOWING)) atk_state_set_add_state (merged_state_set, ATK_STATE_SHOWING); } g_object_unref (state_set); g_object_unref (child); } return merged_state_set; }
static gboolean my_atk_selection_add_selection (AtkSelection *selection, gint i) { MyAtkSelection *self = MY_ATK_SELECTION(selection); if (!self) return FALSE; AtkObject *child = atk_object_ref_accessible_child (ATK_OBJECT (selection), i); AtkStateSet *ss = atk_object_ref_state_set (child); atk_state_set_add_state (ss, ATK_STATE_SELECTED); return atk_state_set_contains_state (ss, ATK_STATE_SELECTED); }
/* atk table */ static AtkObject * eti_ref_at (AtkTable *table, gint row, gint column) { ETableItem *item; AtkObject * ret; GalA11yETableItemPrivate *priv = GET_PRIVATE (table); if (atk_state_set_contains_state (priv->state_set, ATK_STATE_DEFUNCT)) return NULL; item = E_TABLE_ITEM (eti_a11y_get_gobject (ATK_OBJECT (table))); if (!item) return NULL; if (column >= 0 && column < item->cols && row >= 0 && row < item->rows && item->cell_views_realized) { ECellView *cell_view = item->cell_views[column]; ETableCol *ecol = e_table_header_get_column (item->header, column); ret = gal_a11y_e_cell_registry_get_object ( NULL, item, cell_view, ATK_OBJECT (table), ecol->spec->model_col, column, row); if (ATK_IS_OBJECT (ret)) { g_object_weak_ref ( G_OBJECT (ret), (GWeakNotify) cell_destroyed, ret); /* if current cell is focused, add FOCUSED state */ if (e_selection_model_cursor_row (item->selection) == GAL_A11Y_E_CELL (ret)->row && e_selection_model_cursor_col (item->selection) == GAL_A11Y_E_CELL (ret)->model_col) gal_a11y_e_cell_add_state ( GAL_A11Y_E_CELL (ret), ATK_STATE_FOCUSED, FALSE); } else ret = NULL; return ret; } return NULL; }
/** * @brief Emits state-changed signals for naviframe child page if needed * * @param naviframe_page an AtkObject for naviframe page */ static void _eail_naviframe_page_emit_changed_signals(AtkObject *naviframe_page) { AtkStateSet *state_set = NULL; gboolean visible = FALSE; state_set = atk_object_ref_state_set(naviframe_page); visible = atk_state_set_contains_state(state_set, ATK_STATE_VISIBLE); atk_object_notify_state_change(naviframe_page, ATK_STATE_VISIBLE, visible); atk_object_notify_state_change(naviframe_page, ATK_STATE_SHOWING, visible); DBG("Emiting state_changed visible/showing: %d", visible); }
static void _do_test(AtkObject *obj) { int child_count = 0; child_count = atk_object_get_n_accessible_children(obj); g_assert(child_count == 2); _printf("n_accessible_children - done\n"); AtkStateSet *state_set = atk_object_ref_state_set(obj); gboolean v_contains = atk_state_set_contains_state(state_set, ATK_STATE_VERTICAL); gboolean h_contains = atk_state_set_contains_state(state_set, ATK_STATE_HORIZONTAL); g_object_unref(state_set); g_assert(v_contains || h_contains); _printf("ref_state_set - done\n"); /*AtkValue iface tests*/ g_assert(ATK_IS_VALUE(obj)); GValue value = G_VALUE_INIT; double d_value; atk_value_get_maximum_value(ATK_VALUE(obj), &value); d_value = g_value_get_double(&value); g_assert(d_value == 1.0); atk_value_get_minimum_value(ATK_VALUE(obj), &value); d_value = g_value_get_double(&value); g_assert(d_value == 0.0); g_value_set_double(&value, 0.3); gboolean success = atk_value_set_current_value(ATK_VALUE(obj), &value); g_assert(success); atk_value_get_current_value(ATK_VALUE(obj), &value); g_assert(G_VALUE_HOLDS_DOUBLE(&value)); d_value = g_value_get_double(&value); g_assert(d_value == 0.3); _printf("atk_value - done\n"); eailu_test_atk_focus(obj, TRUE); }
/** * Wrapper for atk_state_set_contains_state(). */ static PyObject* _atkstateset_contains_state (PyAtkStateSet *self, PyObject *args) { AtkStateType val; debug ("_atkstateset_contains_state\n"); if (!PyArg_ParseTuple (args, "i:contains_state", &val)) return NULL; if (atk_state_set_contains_state (ATKSTATESET (self), val)) Py_RETURN_TRUE; Py_RETURN_FALSE; }
static gint gtk_icon_view_item_accessible_get_character_count (AtkText *text) { GtkIconViewItemAccessible *item; item = GTK_ICON_VIEW_ITEM_ACCESSIBLE (text); if (atk_state_set_contains_state (item->state_set, ATK_STATE_DEFUNCT)) return 0; if (item->text) return g_utf8_strlen (item->text, -1); else return 0; }
static gboolean my_atk_selection_is_child_selected (AtkSelection *selection, gint i) { MyAtkSelection *self = MY_ATK_SELECTION(selection); if (!self) return FALSE; AtkObject *child = NULL; AtkStateSet *states = NULL; child = atk_object_ref_accessible_child (ATK_OBJECT (selection), i); states = atk_object_ref_state_set (child); if (atk_state_set_contains_state (states, ATK_STATE_SELECTED)) return TRUE; return FALSE; }
static gboolean my_atk_selection_remove_selection (AtkSelection *selection, gint no) { MyAtkSelection *self = MY_ATK_SELECTION(selection); AtkObject *child = NULL; AtkStateSet *states = NULL; GArray *array = NULL; AtkObject *o = NULL; int i; int childs; gboolean ret = FALSE; if (!self) return FALSE; array = g_array_new (FALSE, FALSE, sizeof (AtkObject *)); childs = atk_object_get_n_accessible_children (ATK_OBJECT (selection)); for (i=0; i<childs; i++) { child = atk_object_ref_accessible_child (ATK_OBJECT (selection), i); states = atk_object_ref_state_set (child); if (atk_state_set_contains_state (states, ATK_STATE_SELECTED)) g_array_append_val (array, child); } g_object_unref (states); o = g_array_index (array, AtkObject *, no); states = atk_object_ref_state_set (o); atk_state_set_remove_state (states, ATK_STATE_SELECTED); ret = !atk_state_set_contains_state (states, ATK_STATE_SELECTED); g_object_unref (states); g_object_unref (o); g_object_unref (self); g_array_free (array, TRUE); return ret; }
static gint gtk_icon_view_item_accessible_get_offset_at_point (AtkText *text, gint x, gint y, AtkCoordType coord_type) { GtkIconViewItemAccessible *item; gint offset = 0; #if 0 GtkIconView *icon_view; const gchar *item_text; gint index; gint l_x, l_y; #endif item = GTK_ICON_VIEW_ITEM_ACCESSIBLE (text); if (!GTK_IS_ICON_VIEW (item->widget)) return -1; if (atk_state_set_contains_state (item->state_set, ATK_STATE_DEFUNCT)) return -1; #if 0 icon_view = GTK_ICON_VIEW (item->widget); /* FIXME we probably have to use GailTextCell to salvage this */ gtk_icon_view_update_item_text (icon_view, item->item); atk_component_get_position (ATK_COMPONENT (text), &l_x, &l_y, coord_type); x -= l_x + item->item->layout_x - item->item->x; x += ((item->item->width - item->item->layout_width) / 2) + (MAX (item->item->pixbuf_width, icon_view->priv->item_width) - item->item->width) / 2, y -= l_y + item->item->layout_y - item->item->y; item_text = pango_layout_get_text (icon_view->priv->layout); if (!pango_layout_xy_to_index (icon_view->priv->layout, x * PANGO_SCALE, y * PANGO_SCALE, &index, NULL)) { if (x < 0 || y < 0) index = 0; else index = -1; } if (index == -1) offset = g_utf8_strlen (item_text, -1); else offset = g_utf8_pointer_to_offset (item_text, item_text + index); #endif return offset; }