JSStringRef AccessibilityUIElement::title() { const gchar* name = atk_object_get_name(ATK_OBJECT(m_element)); GOwnPtr<gchar> axTitle(g_strdup_printf("AXTitle: %s", name ? name : "")); return JSStringCreateWithUTF8CString(axTitle.get()); }
static void _print_image_info(AtkObject *obj) { gint height, width; G_CONST_RETURN gchar *desc; G_CONST_RETURN gchar *name = atk_object_get_name (obj); G_CONST_RETURN gchar *type_name = g_type_name(G_TYPE_FROM_INSTANCE (obj)); height = width = 0; if(!ATK_IS_IMAGE(obj)) return; g_print("atk_object_get_name : %s\n", name ? name : "<NULL>"); g_print("atk_object_get_type_name : %s\n",type_name ?type_name :"<NULL>"); g_print("*** Start Image Info ***\n"); desc = atk_image_get_image_description(ATK_IMAGE(obj)); g_print ("atk_image_get_image_desc returns : %s\n",desc ? desc:"<NULL>"); atk_image_get_image_size(ATK_IMAGE(obj), &height ,&width); g_print("atk_image_get_image_size returns: height %d width %d\n", height,width); if(atk_image_set_image_description(ATK_IMAGE(obj),"New image Description")){ desc = atk_image_get_image_description(ATK_IMAGE(obj)); g_print ("atk_image_get_image_desc now returns : %s\n",desc?desc:"<NULL>"); } g_print("*** End Image Info ***\n"); }
static G_CONST_RETURN gchar* jaw_object_get_name (AtkObject *atk_obj) { JawObject *jaw_obj = JAW_OBJECT(atk_obj); jobject ac = jaw_obj->acc_context; JNIEnv *jniEnv = jaw_util_get_jni_env(); if (atk_object_get_role(atk_obj) == ATK_ROLE_COMBO_BOX && atk_object_get_n_accessible_children(atk_obj) == 1) { AtkSelection *selection = ATK_SELECTION(atk_obj); if (selection != NULL) { AtkObject *child = atk_selection_ref_selection(selection, 0); if (child != NULL) { return atk_object_get_name(child); } } } jclass classAccessibleContext = (*jniEnv)->FindClass( jniEnv, "javax/accessibility/AccessibleContext" ); jmethodID jmid = (*jniEnv)->GetMethodID( jniEnv, classAccessibleContext, "getAccessibleName", "()Ljava/lang/String;" ); jstring jstr = (*jniEnv)->CallObjectMethod( jniEnv, ac, jmid ); if (atk_obj->name != NULL) { (*jniEnv)->ReleaseStringUTFChars(jniEnv, jaw_obj->jstrName, atk_obj->name); (*jniEnv)->DeleteGlobalRef(jniEnv, jaw_obj->jstrName); } if (jstr != NULL) { jaw_obj->jstrName = (*jniEnv)->NewGlobalRef(jniEnv, jstr); atk_obj->name = (gchar*)(*jniEnv)->GetStringUTFChars(jniEnv, jaw_obj->jstrName, NULL); } return atk_obj->name; }
static const gchar * gtk_button_accessible_get_name (AtkObject *obj) { const gchar *name = NULL; GtkWidget *widget; GtkWidget *child; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (obj)); if (widget == NULL) return NULL; name = ATK_OBJECT_CLASS (gtk_button_accessible_parent_class)->get_name (obj); if (name != NULL) return name; child = get_label_from_button (widget); if (GTK_IS_LABEL (child)) name = gtk_label_get_text (GTK_LABEL (child)); else { GtkWidget *image; image = get_image_from_button (widget); if (GTK_IS_IMAGE (image)) { AtkObject *atk_obj; atk_obj = gtk_widget_get_accessible (image); name = atk_object_get_name (atk_obj); } } return name; }
static void _property_change_handler (AtkObject *obj, AtkPropertyValues *values) { G_CONST_RETURN gchar *type_name = g_type_name (G_TYPE_FROM_INSTANCE (obj)); G_CONST_RETURN gchar *name = atk_object_get_name (obj); g_print ("_property_change_handler: Accessible Type: %s\n", type_name ? type_name : "NULL"); g_print ("_property_change_handler: Accessible name: %s\n", name ? name : "NULL"); g_print ("_property_change_handler: PropertyName: %s\n", values->property_name ? values->property_name: "NULL"); if (strcmp (values->property_name, "accessible-value") == 0) { GValue *value, val; int position; value = &val; memset (value, 0, sizeof (GValue)); atk_value_get_current_value (ATK_VALUE (obj), value); g_return_if_fail (G_VALUE_HOLDS_INT (value)); position = g_value_get_int (value); g_print ("Position is %d previous position was %d\n", position, last_position); last_position = position; atk_value_get_minimum_value (ATK_VALUE (obj), value); g_return_if_fail (G_VALUE_HOLDS_INT (value)); position = g_value_get_int (value); g_print ("Minimum Value is %d\n", position); atk_value_get_maximum_value (ATK_VALUE (obj), value); g_return_if_fail (G_VALUE_HOLDS_INT (value)); position = g_value_get_int (value); g_print ("Maximum Value is %d\n", position); } }
static AtkObject * create_accessible (HTMLObject *o, AtkObject *parent) { AtkObject *accessible = NULL; switch (HTML_OBJECT_TYPE (o)) { case HTML_TYPE_CLUEFLOW: accessible = html_a11y_paragraph_new (o); break; case HTML_TYPE_TEXT: accessible = html_a11y_text_new (o); break; case HTML_TYPE_IMAGE: accessible = html_a11y_image_new (o); break; case HTML_TYPE_TABLE: accessible = html_a11y_table_new (o); break; case HTML_TYPE_TABLECELL: accessible = html_a11y_cell_new (o); break; case HTML_TYPE_RULE: accessible = html_a11y_new (o, ATK_ROLE_SEPARATOR); break; case HTML_TYPE_EMBEDDED: case HTML_TYPE_SELECT: case HTML_TYPE_RADIO: case HTML_TYPE_OBJECT: case HTML_TYPE_TEXTAREA: case HTML_TYPE_TEXTINPUT: case HTML_TYPE_BUTTON: case HTML_TYPE_CHECKBOX: case HTML_TYPE_IFRAME: if (HTML_EMBEDDED (o)-> widget) { accessible = gtk_widget_get_accessible (HTML_EMBEDDED (o)->widget); if (HTML_EMBEDDED (o)->name) { if ((accessible != NULL) && (atk_object_get_name (accessible) == NULL)) atk_object_set_name (accessible, HTML_EMBEDDED (o)->name); } } break; case HTML_TYPE_TEXTSLAVE: /* ignore */ break; default: accessible = html_a11y_new (o, ATK_ROLE_UNKNOWN); break; } if (accessible && parent) { /* printf ("set parent of %p to %p\n", accessible, parent); */ atk_object_set_parent (accessible, parent); } return accessible; }
JSStringRef AccessibilityUIElement::title() { const gchar* name = atk_object_get_name(ATK_OBJECT(m_element)); if (!name) return JSStringCreateWithCharacters(0, 0); return JSStringCreateWithUTF8CString(name); }
static dbus_bool_t impl_get_Name (DBusMessageIter * iter, void *user_data) { AtkObject *object = (AtkObject *) user_data; g_return_val_if_fail (ATK_IS_OBJECT (user_data), FALSE); return droute_return_v_string (iter, atk_object_get_name (object)); }
JSRetainPtr<JSStringRef> AccessibilityUIElement::title() { if (!ATK_IS_OBJECT(m_element.get())) return JSStringCreateWithCharacters(0, 0); const gchar* name = atk_object_get_name(ATK_OBJECT(m_element.get())); GOwnPtr<gchar> axTitle(g_strdup_printf("AXTitle: %s", name ? name : "")); return JSStringCreateWithUTF8CString(axTitle.get()); }
static const gchar * ea_day_view_main_item_get_name (AtkObject *accessible) { AtkObject *parent; g_return_val_if_fail (EA_IS_DAY_VIEW_MAIN_ITEM (accessible), NULL); parent = atk_object_get_parent (accessible); if (!parent) return NULL; return atk_object_get_name (parent); }
static void _print_object_info(AtkObject *obj) { AtkRole atk_role = atk_object_get_role(obj); const char *name = atk_object_get_name(obj); const char *type_name = g_type_name(G_TYPE_FROM_INSTANCE(obj)); const char *role_name = atk_role_get_name(atk_role); printf("atk_object_get_name: %s\n", name ? name : "NULL"); printf("atk_object_get_role: %s\n", role_name ? role_name : "NULL"); printf("atk_object_get_type_name: %s\n", type_name ? type_name : "NULL"); }
static String attributesOfElement(AccessibilityUIElement* element) { StringBuilder builder; builder.append(String::format("%s\n", element->role()->string().utf8().data())); // For the parent we print its role and its name, if available. builder.append("AXParent: "); AccessibilityUIElement parent = element->parentElement(); if (AtkObject* atkParent = parent.platformUIElement()) { builder.append(roleToString(atk_object_get_role(atkParent))); const char* parentName = atk_object_get_name(atkParent); if (parentName && g_utf8_strlen(parentName, -1)) builder.append(String::format(": %s", parentName)); } else builder.append("(null)"); builder.append("\n"); builder.append(String::format("AXChildren: %d\n", element->childrenCount())); builder.append(String::format("AXPosition: { %f, %f }\n", element->x(), element->y())); builder.append(String::format("AXSize: { %f, %f }\n", element->width(), element->height())); String title = element->title()->string(); if (!title.isEmpty()) builder.append(String::format("%s\n", title.utf8().data())); String description = element->description()->string(); if (!description.isEmpty()) builder.append(String::format("%s\n", description.utf8().data())); String value = element->stringValue()->string(); if (!value.isEmpty()) builder.append(String::format("%s\n", value.utf8().data())); builder.append(String::format("AXFocusable: %d\n", element->isFocusable())); builder.append(String::format("AXFocused: %d\n", element->isFocused())); builder.append(String::format("AXSelectable: %d\n", element->isSelectable())); builder.append(String::format("AXSelected: %d\n", element->isSelected())); builder.append(String::format("AXMultiSelectable: %d\n", element->isMultiSelectable())); builder.append(String::format("AXEnabled: %d\n", element->isEnabled())); builder.append(String::format("AXExpanded: %d\n", element->isExpanded())); builder.append(String::format("AXRequired: %d\n", element->isRequired())); builder.append(String::format("AXChecked: %d\n", element->isChecked())); // We append the ATK specific attributes as a single line at the end. builder.append("AXPlatformAttributes: "); builder.append(getAtkAttributeSetAsString(element->platformUIElement())); return builder.toString(); }
static G_CONST_RETURN gchar* jaw_toplevel_get_name (AtkObject *obj) { gint i; for(i = 0; i < atk_object_get_n_accessible_children(obj); i++) { AtkObject* child = atk_object_ref_accessible_child(obj, i); const gchar* name = atk_object_get_name(child); if (name && strlen(name) > 0) { g_object_unref(G_OBJECT(child)); return name; } g_object_unref(G_OBJECT(child)); } return "Java Application"; }
static void printAccessibilityEvent(AtkObject* accessible, const gchar* signalName) { // Sanity check. if (!accessible || !ATK_IS_OBJECT(accessible) || !signalName) return; const gchar* objectName = atk_object_get_name(accessible); guint objectRole = atk_object_get_role(accessible); // Try to always provide a name to be logged for the object. if (!objectName || *objectName == '\0') objectName = "(No name)"; printf("Accessibility object emitted \"%s\" / Name: \"%s\" / Role: %d\n", signalName, objectName, objectRole); }
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"); }
static void _check_children (AtkObject *obj) { gint n_children, i, j; AtkObject *child; AtkObject *grand_child; n_children = atk_object_get_n_accessible_children (obj); if (n_children > 1) { g_print ("*** Unexpected number of children for combo box: %d\n", n_children); return; } if (n_children == 2) { child = atk_object_ref_accessible_child (obj, 1); g_return_if_fail (atk_object_get_role (child) == ATK_ROLE_TEXT); j = atk_object_get_index_in_parent (child); if (j != 1) g_print ("*** inconsistency between parent and children %d %d ***\n", 1, j); g_object_unref (G_OBJECT (child)); } child = atk_object_ref_accessible_child (obj, 0); g_return_if_fail (atk_object_get_role (child) == ATK_ROLE_LIST); j = atk_object_get_index_in_parent (child); if (j != 0) g_print ("*** inconsistency between parent and children %d %d ***\n", 0, j); n_children = atk_object_get_n_accessible_children (child); for (i = 0; i < n_children; i++) { G_CONST_RETURN gchar *name; grand_child = atk_object_ref_accessible_child (child, i); name = atk_object_get_name (grand_child); g_print ("Index: %d Name: %s\n", i, name ? name : "<NULL>"); g_object_unref (G_OBJECT (grand_child)); } g_object_unref (G_OBJECT (child)); }
static G_CONST_RETURN gchar* gail_button_get_name (AtkObject *obj) { G_CONST_RETURN gchar* name = NULL; g_return_val_if_fail (GAIL_IS_BUTTON (obj), NULL); name = ATK_OBJECT_CLASS (gail_button_parent_class)->get_name (obj); if (name == NULL) { /* * Get the text on the label */ GtkWidget *widget; GtkWidget *child; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (obj)); if (widget == NULL) /* * State is defunct */ return NULL; g_return_val_if_fail (GTK_IS_BUTTON (widget), NULL); child = get_label_from_button (widget, 0, FALSE); if (GTK_IS_LABEL (child)) name = gtk_label_get_text (GTK_LABEL (child)); else { GtkImage *image; image = get_image_from_button (widget); if (GTK_IS_IMAGE (image)) { AtkObject *atk_obj; atk_obj = gtk_widget_get_accessible (GTK_WIDGET (image)); name = atk_object_get_name (atk_obj); } } } return name; }
static gboolean window_event_listener (GSignalInvocationHint * signal_hint, guint n_param_values, const GValue * param_values, gpointer data) { AtkObject *accessible; GSignalQuery signal_query; const gchar *name, *s; g_signal_query (signal_hint->signal_id, &signal_query); name = signal_query.signal_name; accessible = ATK_OBJECT (g_value_get_object (¶m_values[0])); s = atk_object_get_name (accessible); g_print ("Detected window event \"%s\" from object \"%p\" named \"%s\"\n", name, accessible, s); return TRUE; }
static void printAccessibilityEvent(AtkObject* accessible, const gchar* signalName, const gchar* signalValue) { // Do not handle state-change:defunct signals, as the AtkObject // associated to them will not be valid at this point already. if (!signalName || !g_strcmp0(signalName, "state-change:defunct")) return; if (!accessible || !ATK_IS_OBJECT(accessible)) return; const gchar* objectName = atk_object_get_name(accessible); AtkRole objectRole = atk_object_get_role(accessible); // Try to always provide a name to be logged for the object. if (!objectName || *objectName == '\0') objectName = "(No name)"; GOwnPtr<gchar> signalNameAndValue(signalValue ? g_strdup_printf("%s = %s", signalName, signalValue) : g_strdup(signalName)); printf("Accessibility object emitted \"%s\" / Name: \"%s\" / Role: %d\n", signalNameAndValue.get(), objectName, objectRole); }
static void _traverse_children(AtkObject *obj) { const char *name = atk_object_get_name(obj); printf("Traversing on child objects of: %s\n", name?name:"NULL"); int child_count = atk_object_get_n_accessible_children(obj); int i; for (i=0; i < child_count; i++) { AtkObject *child = atk_object_ref_accessible_child(obj, i); if (ATK_IS_OBJECT(child)) { _print_object_info(child); } _traverse_children(child); g_object_unref(child); } }
static void _do_test_photo(AtkObject *obj) { const char *name = atk_object_get_name(obj); const char *type_name = g_type_name(G_TYPE_FROM_INSTANCE(obj)); const char * const desc_test = "top secret"; const char *desc; int height = 0, width = 0; int x = -1, y = -1; _printf("_get_name: %s\n", name ? name : "NULL"); _printf("_get_type_name: %s\n", type_name ? type_name : "NULL"); g_assert(ATK_IS_IMAGE(obj)); AtkStateSet *state_set = atk_object_ref_state_set(obj); g_object_unref(state_set); // test AtkImage atk_image_get_image_position(ATK_IMAGE(obj), &x, &y, ATK_XY_SCREEN); _printf("atk_image_get_image_position on screen: x: %d y %d\n", x, y); g_assert(NULL == atk_image_get_image_description(ATK_IMAGE(obj))); g_assert(TRUE == atk_image_set_image_description(ATK_IMAGE(obj), desc_test)); desc = atk_image_get_image_description(ATK_IMAGE(obj)); _printf("atk_image_get_image_description: %s\n", desc ? desc : "NULL"); g_assert(NULL != desc); g_assert_cmpstr(desc_test, ==, desc); atk_image_get_image_size(ATK_IMAGE(obj), &height, &width); _printf("atk_image_get_image_size: height %d width %d\n", height, width); // test AtkAction g_assert(ACTIONS_NUMBER == atk_action_get_n_actions(ATK_ACTION(obj))); eailu_test_action_activate(ATK_ACTION(obj), "click"); g_assert((eailu_get_action_number(ATK_ACTION(obj), "typo")) == -1); eailu_test_action_description_all(ATK_ACTION(obj)); }
/* * CORBA Accessibility::Accessible::get_name method implementation */ static CORBA_char * impl_accessibility_accessible_get_name (PortableServer_Servant servant, CORBA_Environment *ev) { const gchar *name; CORBA_char *retval; AtkObject *object = get_atkobject_from_servant (servant); g_return_val_if_fail (object != NULL, CORBA_string_dup ("")); name = atk_object_get_name (object); if (name) { retval = CORBA_string_dup (name); } else { retval = CORBA_string_dup (""); } return retval; }
static void gtk_icon_view_accessible_model_row_changed (GtkTreeModel *tree_model, GtkTreePath *path, GtkTreeIter *iter, gpointer user_data) { AtkObject *atk_obj; gint index; GtkWidget *widget; GtkIconView *icon_view; GtkIconViewItem *item; GtkIconViewItemAccessible *a11y_item; const gchar *name; atk_obj = gtk_widget_get_accessible (GTK_WIDGET (user_data)); index = gtk_tree_path_get_indices(path)[0]; a11y_item = GTK_ICON_VIEW_ITEM_ACCESSIBLE ( gtk_icon_view_accessible_find_child (atk_obj, index)); if (a11y_item) { widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (atk_obj)); icon_view = GTK_ICON_VIEW (widget); item = a11y_item->item; name = atk_object_get_name (ATK_OBJECT (a11y_item)); if (!name || strcmp (name, "") == 0) { g_free (a11y_item->text); a11y_item->text = get_text (icon_view, item); } } g_signal_emit_by_name (atk_obj, "visible-data-changed"); return; }
static void _do_test(AtkObject *obj) { AtkStateSet *state_set = atk_object_ref_state_set(obj); const char *name; g_assert(ATK_IS_OBJECT(obj)); g_assert(atk_object_get_role(obj) == ATK_ROLE_RADIO_BUTTON); atk_object_set_description(obj, "test"); g_assert_cmpstr(atk_object_get_description(obj), ==, "test"); name = atk_object_get_name(obj); if (!strcmp(name, RADIO1)) { state_set = atk_object_ref_state_set(obj); g_assert(!atk_state_set_contains_state(state_set, ATK_STATE_CHECKED)); g_object_unref(state_set); ++name_test_passed; atk_object_set_name(obj, TEST_NAME); g_assert_cmpstr(atk_object_get_name(obj), ==, TEST_NAME); }
static void _check_object (AtkObject *obj) { AtkRole role; static G_CONST_RETURN char *name = NULL; static gboolean first_time = TRUE; role = atk_object_get_role (obj); if (role == ATK_ROLE_FRAME) /* * Find the specified menu item */ { AtkRole valid_roles[NUM_VALID_ROLES]; AtkObject *atk_menu_item; GtkWidget *widget; if (name == NULL) { valid_roles[0] = ATK_ROLE_MENU_ITEM; name = g_getenv ("TEST_ACCESSIBLE_NAME"); if (name == NULL) name = "foo"; } atk_menu_item = find_object_by_accessible_name_and_role (obj, name, valid_roles, NUM_VALID_ROLES); if (atk_menu_item == NULL) { g_print ("Object not found for %s\n", name); return; } g_assert (GTK_IS_ACCESSIBLE (atk_menu_item)); widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (atk_menu_item)); g_assert (GTK_IS_MENU_ITEM (widget)); if (first_time) first_time = FALSE; else return; /* * This action opens the menu whose name is "foo" or whatever * was specified in the environment variable TEST_ACCESSIBLE_NAME */ atk_action_do_action (ATK_ACTION (atk_menu_item), 0); } else if ((role == ATK_ROLE_MENU_ITEM) || (role == ATK_ROLE_CHECK_MENU_ITEM) || (role == ATK_ROLE_RADIO_MENU_ITEM) || (role == ATK_ROLE_TEAR_OFF_MENU_ITEM)) { G_CONST_RETURN char *keybinding; G_CONST_RETURN char *accessible_name; accessible_name = atk_object_get_name (obj); if (accessible_name) g_print ("Name: %s\n", accessible_name); g_print ("Action: %s\n", atk_action_get_name (ATK_ACTION (obj), 0)); keybinding = atk_action_get_keybinding (ATK_ACTION (obj), 0); if (keybinding) g_print ("KeyBinding: %s\n", keybinding); /* * Do the action associated with the menu item once, otherwise * we get into a loop */ if (strcmp (name, accessible_name) == 0) { if (first_time) first_time = FALSE; else return; if (g_getenv ("TEST_ACCESSIBLE_AUTO")) { g_idle_add (_do_menu_item_action, obj); } } } else { G_CONST_RETURN char *accessible_name; accessible_name = atk_object_get_name (obj); if (accessible_name) g_print ("Name: %s\n", accessible_name); else if (GTK_IS_ACCESSIBLE (obj)) { GtkWidget *widget; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (obj)); g_print ("Type: %s\n", g_type_name (G_OBJECT_TYPE (widget))); } } }
static void _check_object (AtkObject *obj) { AtkRole role; static G_CONST_RETURN char *name = NULL; static gboolean first_time = TRUE; role = atk_object_get_role (obj); if (role == ATK_ROLE_PUSH_BUTTON) /* * Find the specified optionmenu item */ { AtkRole valid_roles[NUM_VALID_ROLES]; AtkObject *atk_option_menu; GtkWidget *widget; if (name == NULL) { name = g_getenv ("TEST_ACCESSIBLE_NAME"); if (name == NULL) name = "foo"; } valid_roles[0] = ATK_ROLE_PUSH_BUTTON; atk_option_menu = find_object_by_accessible_name_and_role (obj, name, valid_roles, NUM_VALID_ROLES); if (atk_option_menu == NULL) { g_print ("Object not found for %s\n", name); return; } else { g_print ("Object found for %s\n", name); } g_assert (GTK_IS_ACCESSIBLE (atk_option_menu)); widget = GTK_ACCESSIBLE (atk_option_menu)->widget; g_assert (GTK_IS_OPTION_MENU (widget)); if (first_time) first_time = FALSE; else return; /* * This action opens the GtkOptionMenu whose name is "foo" or whatever * was specified in the environment variable TEST_ACCESSIBLE_NAME */ atk_action_do_action (ATK_ACTION (atk_option_menu), 0); } else if ((role == ATK_ROLE_MENU_ITEM) || (role == ATK_ROLE_CHECK_MENU_ITEM) || (role == ATK_ROLE_RADIO_MENU_ITEM) || (role == ATK_ROLE_TEAR_OFF_MENU_ITEM)) { AtkObject *parent, *child; AtkRole parent_role; /* * If we receive focus while waiting for the menu to be closed * we return immediately */ if (doing_action) return; parent = atk_object_get_parent (obj); parent_role = atk_object_get_role (parent); g_assert (parent_role == ATK_ROLE_MENU); child = atk_object_ref_accessible_child (parent, 1); doing_action = TRUE; gtk_timeout_add (5000, _do_menu_item_action, child); } else { G_CONST_RETURN char *accessible_name; accessible_name = atk_object_get_name (obj); if (accessible_name) { g_print ("Name: %s\n", accessible_name); } else if (GTK_IS_ACCESSIBLE (obj)) { GtkWidget *widget = GTK_ACCESSIBLE (obj)->widget; g_print ("Type: %s\n", g_type_name (G_OBJECT_TYPE (widget))); } if (role == ATK_ROLE_TABLE) { gint n_cols, i; n_cols = atk_table_get_n_columns (ATK_TABLE (obj)); g_print ("Number of Columns: %d\n", n_cols); for (i = 0; i < n_cols; i++) { AtkObject *header; header = atk_table_get_column_header (ATK_TABLE (obj), i); g_print ("header: %s %s\n", g_type_name (G_OBJECT_TYPE (header)), atk_object_get_name (header)); } } } }