static void gucharmap_chartable_accessible_connect_widget_destroyed (GtkAccessible *accessible) { if (gtk_accessible_get_widget (accessible)) { g_signal_connect_after (gtk_accessible_get_widget (accessible), "destroy", G_CALLBACK (gucharmap_chartable_accessible_destroyed), accessible); } GTK_ACCESSIBLE_CLASS (gucharmap_chartable_accessible_parent_class)->connect_widget_destroyed (accessible); }
static gboolean gtk_icon_view_accessible_remove_selection (AtkSelection *selection, gint i) { GtkWidget *widget; GtkIconView *icon_view; GtkIconViewItem *item; GList *l; gint count; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (selection)); if (widget == NULL) return FALSE; icon_view = GTK_ICON_VIEW (widget); l = icon_view->priv->items; count = 0; while (l) { item = l->data; if (item->selected) { if (count == i) { _gtk_icon_view_unselect_item (icon_view, item); return TRUE; } count++; } l = l->next; } return FALSE; }
static AtkObject* gail_notebook_ref_selection (AtkSelection *selection, gint i) { AtkObject *accessible; GtkWidget *widget; GtkNotebook *notebook; gint pagenum; /* * A note book can have only one selection. */ gail_return_val_if_fail (i == 0, NULL); g_return_val_if_fail (GAIL_IS_NOTEBOOK (selection), NULL); widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (selection)); if (widget == NULL) /* State is defunct */ return NULL; notebook = GTK_NOTEBOOK (widget); pagenum = gtk_notebook_get_current_page (notebook); gail_return_val_if_fail (pagenum != -1, NULL); accessible = gail_notebook_ref_child (ATK_OBJECT (selection), pagenum); return accessible; }
EvView * ev_page_accessible_get_view (EvPageAccessible *page_accessible) { g_return_val_if_fail (EV_IS_PAGE_ACCESSIBLE (page_accessible), NULL); return EV_VIEW (gtk_accessible_get_widget (GTK_ACCESSIBLE (page_accessible->priv->view_accessible))); }
static AtkObject * panel_menu_button_accessible_ref_child (AtkObject *obj, int index) { PanelMenuButton *button; GtkWidget *menu; g_return_val_if_fail (PANEL_IS_MENU_BUTTON_ACCESSIBLE (obj), NULL); if (index != 0) return NULL; #if GTK_CHECK_VERSION (2, 21, 0) if (!(button = PANEL_MENU_BUTTON (gtk_accessible_get_widget (GTK_ACCESSIBLE (obj))))) #else if (!(button = PANEL_MENU_BUTTON (GTK_ACCESSIBLE (obj)->widget))) #endif return NULL; if (!(menu = panel_menu_button_create_menu (button))) return NULL; /* * This ensures that the menu is populated with all menu items */ g_signal_emit_by_name (menu, "show", NULL); return g_object_ref (gtk_widget_get_accessible (menu)); }
static gboolean gtk_menu_item_accessible_remove_selection (AtkSelection *selection, gint i) { GtkMenuShell *shell; GtkWidget *widget; GtkWidget *menu; GtkWidget *item; if (i != 0) return FALSE; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (selection)); if (widget == NULL) return FALSE; menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (widget)); if (menu == NULL) return FALSE; shell = GTK_MENU_SHELL (menu); item = gtk_menu_shell_get_selected_item (shell); if (item && gtk_menu_item_get_submenu (GTK_MENU_ITEM (item))) gtk_menu_shell_deselect (shell); return TRUE; }
static AtkObject * gtk_menu_item_accessible_ref_selection (AtkSelection *selection, gint i) { GtkMenuShell *shell; AtkObject *obj; GtkWidget *widget; GtkWidget *menu; GtkWidget *item; if (i != 0) return NULL; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (selection)); if (widget == NULL) return NULL; menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (widget)); if (menu == NULL) return NULL; shell = GTK_MENU_SHELL (menu); item = gtk_menu_shell_get_selected_item (shell); if (item != NULL) { obj = gtk_widget_get_accessible (item); g_object_ref (obj); return obj; } return NULL; }
static gboolean gtk_menu_item_accessible_do_action (AtkAction *action, gint i) { GtkWidget *item, *item_parent; gboolean item_mapped; item = gtk_accessible_get_widget (GTK_ACCESSIBLE (action)); if (item == NULL) return FALSE; if (i != 0) return FALSE; if (!gtk_widget_get_sensitive (item) || !gtk_widget_get_visible (item)) return FALSE; item_parent = gtk_widget_get_parent (item); if (!GTK_IS_MENU_SHELL (item_parent)) return FALSE; gtk_menu_shell_select_item (GTK_MENU_SHELL (item_parent), item); item_mapped = gtk_widget_get_mapped (item); /* This is what is called when <Return> is pressed for a menu item. * The last argument means 'force hide'. */ g_signal_emit_by_name (item_parent, "activate-current", 1); if (!item_mapped) ensure_menus_unposted (GTK_MENU_ITEM_ACCESSIBLE (action)); return TRUE; }
static gboolean gail_menu_shell_add_selection (AtkSelection *selection, gint i) { GList *kids; GtkWidget *item; guint length; GtkWidget *widget; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (selection)); if (widget == NULL) { /* State is defunct */ return FALSE; } kids = gtk_container_get_children (GTK_CONTAINER (widget)); length = g_list_length (kids); if (i < 0 || i > length) { g_list_free (kids); return FALSE; } item = g_list_nth_data (kids, i); g_list_free (kids); g_return_val_if_fail (GTK_IS_MENU_ITEM(item), FALSE); gtk_menu_shell_select_item (GTK_MENU_SHELL (widget), item); return TRUE; }
static gboolean gail_menu_shell_remove_selection (AtkSelection *selection, gint i) { GtkMenuShell *shell; GtkWidget *widget; GtkWidget *item; if (i != 0) return FALSE; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (selection)); if (widget == NULL) { /* State is defunct */ return FALSE; } shell = GTK_MENU_SHELL (widget); item = gtk_menu_shell_get_selected_item (shell); if (item && gtk_menu_item_get_submenu (GTK_MENU_ITEM (item))) { /* * Menu item contains a menu and it is the selected menu item * so deselect it. */ gtk_menu_shell_deselect (shell); } return TRUE; }
static gboolean gail_menu_shell_is_child_selected (AtkSelection *selection, gint i) { GtkMenuShell *shell; GList *kids; gint j; GtkWidget *widget; GtkWidget *item; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (selection)); if (widget == NULL) { /* State is defunct */ return FALSE; } shell = GTK_MENU_SHELL (widget); item = gtk_menu_shell_get_selected_item (shell); if (item == NULL) return FALSE; kids = gtk_container_get_children (GTK_CONTAINER (shell)); j = g_list_index (kids, item); g_list_free (kids); return (j==i); }
static gint gail_menu_shell_get_selection_count (AtkSelection *selection) { GtkMenuShell *shell; GtkWidget *widget; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (selection)); if (widget == NULL) { /* State is defunct */ return 0; } shell = GTK_MENU_SHELL (widget); /* * Identifies the currently selected menu item */ if (gtk_menu_shell_get_selected_item (shell) == NULL) { return 0; } else { return 1; } }
static AtkObject* gail_menu_shell_ref_selection (AtkSelection *selection, gint i) { GtkMenuShell *shell; AtkObject *obj; GtkWidget *widget; GtkWidget *item; if (i != 0) return NULL; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (selection)); if (widget == NULL) { /* State is defunct */ return NULL; } shell = GTK_MENU_SHELL (widget); item = gtk_menu_shell_get_selected_item (shell); if (item != NULL) { obj = gtk_widget_get_accessible (item); g_object_ref (obj); return obj; } else { return NULL; } }
static AtkAttributeSet * gtk_entry_accessible_get_attributes (AtkObject *accessible) { GtkWidget *widget; AtkAttributeSet *attributes; AtkAttribute *placeholder_text; const gchar *text; attributes = ATK_OBJECT_CLASS (_gtk_entry_accessible_parent_class)->get_attributes (accessible); widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible)); if (widget == NULL) return attributes; text = gtk_entry_get_placeholder_text (GTK_ENTRY (widget)); if (text == NULL) return attributes; placeholder_text = g_malloc (sizeof (AtkAttribute)); placeholder_text->name = g_strdup ("placeholder-text"); placeholder_text->value = g_strdup (text); attributes = g_slist_append (attributes, placeholder_text); return attributes; }
static int panel_menu_button_accessible_get_n_children (AtkObject *obj) { g_return_val_if_fail (PANEL_IS_MENU_BUTTON_ACCESSIBLE (obj), 0); return gtk_accessible_get_widget (GTK_ACCESSIBLE (obj)) ? 1 : 0; }
static AtkObject * gtk_menu_item_accessible_ref_child (AtkObject *obj, gint i) { AtkObject *accessible; GtkWidget *widget; GtkWidget *submenu; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (obj)); if (widget == NULL) return NULL; accessible = NULL; submenu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (widget)); if (submenu) { GList *children; GList *tmp_list; children = gtk_container_get_children (GTK_CONTAINER (submenu)); tmp_list = g_list_nth (children, i); if (tmp_list) { accessible = gtk_widget_get_accessible (GTK_WIDGET (tmp_list->data)); g_object_ref (accessible); } g_list_free (children); } return accessible; }
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 G_CONST_RETURN gchar* gail_label_get_name (AtkObject *accessible) { G_CONST_RETURN gchar *name; g_return_val_if_fail (GAIL_IS_LABEL (accessible), NULL); name = ATK_OBJECT_CLASS (gail_label_parent_class)->get_name (accessible); if (name != NULL) return name; else { /* * Get the text on the label */ GtkWidget *widget; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible)); if (widget == NULL) /* * State is defunct */ return NULL; g_return_val_if_fail (GTK_IS_LABEL (widget), NULL); return gtk_label_get_text (GTK_LABEL (widget)); } }
static gboolean gtk_menu_item_accessible_add_selection (AtkSelection *selection, gint i) { GtkMenuShell *shell; GList *kids; guint length; GtkWidget *widget; GtkWidget *menu; GtkWidget *child; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (selection)); if (widget == NULL) return FALSE; menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (widget)); if (menu == NULL) return FALSE; shell = GTK_MENU_SHELL (menu); kids = gtk_container_get_children (GTK_CONTAINER (shell)); length = g_list_length (kids); if (i < 0 || i > length) { g_list_free (kids); return FALSE; } child = g_list_nth_data (kids, i); g_list_free (kids); g_return_val_if_fail (GTK_IS_MENU_ITEM (child), FALSE); gtk_menu_shell_select_item (shell, GTK_WIDGET (child)); return TRUE; }
static gchar* gail_label_get_text (AtkText *text, gint start_pos, gint end_pos) { GtkWidget *widget; GtkLabel *label; const gchar *label_text; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text)); if (widget == NULL) /* State is defunct */ return NULL; label = GTK_LABEL (widget); label_text = gtk_label_get_text (label); if (label_text == NULL) return NULL; else { if (GAIL_LABEL (text)->textutil == NULL) gail_label_init_text_util (GAIL_LABEL (text), widget); return gail_text_util_get_substring (GAIL_LABEL(text)->textutil, start_pos, end_pos); } }
static gboolean gtk_menu_item_accessible_is_child_selected (AtkSelection *selection, gint i) { GtkMenuShell *shell; gint j; GtkWidget *widget; GtkWidget *menu; GtkWidget *item; GList *kids; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (selection)); if (widget == NULL) return FALSE; menu = gtk_menu_item_get_submenu (GTK_MENU_ITEM (widget)); if (menu == NULL) return FALSE; shell = GTK_MENU_SHELL (menu); item = gtk_menu_shell_get_selected_item (shell); if (item == NULL) return FALSE; kids = gtk_container_get_children (GTK_CONTAINER (shell)); j = g_list_index (kids, item); g_list_free (kids); return j==i; }
static gchar* gail_label_get_text_after_offset (AtkText *text, gint offset, AtkTextBoundary boundary_type, gint *start_offset, gint *end_offset) { GtkWidget *widget; GtkLabel *label; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text)); if (widget == NULL) { /* State is defunct */ return NULL; } /* Get label */ label = GTK_LABEL (widget); return gail_text_util_get_text (GAIL_LABEL (text)->textutil, gtk_label_get_layout (label), GAIL_AFTER_OFFSET, boundary_type, offset, start_offset, end_offset); }
static GailTextUtil * get_simple_text (gpointer object) { GObject *gobject; EelAccessibleTextIface *aif; if (GTK_IS_ACCESSIBLE (object)) { gobject = G_OBJECT (gtk_accessible_get_widget (GTK_ACCESSIBLE (object))); } else { gobject = eel_accessibility_get_gobject (object); } if (!gobject) { return NULL; } aif = EEL_ACCESSIBLE_TEXT_GET_IFACE (gobject); if (!aif) { g_warning ("No accessible text inferface on '%s'", g_type_name_from_instance ((gpointer) gobject)); } else if (aif->get_text) { return aif->get_text (gobject); } return NULL; }
static gchar* gail_label_get_selection (AtkText *text, gint selection_num, gint *start_pos, gint *end_pos) { GtkWidget *widget; GtkLabel *label; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text)); if (widget == NULL) /* State is defunct */ return NULL; label = GTK_LABEL (widget); /* Only let the user get the selection if one is set, and if the * selection_num is 0. */ if (!gtk_label_get_selectable( label) || selection_num != 0) return NULL; if (gtk_label_get_selection_bounds (label, start_pos, end_pos)) { const gchar* label_text = gtk_label_get_text (label); if (label_text == NULL) return 0; else return gail_text_util_get_substring (GAIL_LABEL (text)->textutil, *start_pos, *end_pos); } else return NULL; }
static gboolean gtk_scale_button_accessible_do_action (AtkAction *action, gint i) { GtkWidget *widget; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (action)); if (widget == NULL) return FALSE; if (!gtk_widget_is_sensitive (widget) || !gtk_widget_get_visible (widget)) return FALSE; switch (i) { case 0: g_signal_emit_by_name (widget, "popup"); return TRUE; case 1: g_signal_emit_by_name (widget, "popdown"); return TRUE; default: return FALSE; } }
static gboolean gail_label_set_selection (AtkText *text, gint selection_num, gint start_pos, gint end_pos) { GtkWidget *widget; GtkLabel *label; gint start, end; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text)); if (widget == NULL) /* State is defunct */ return FALSE; if (selection_num != 0) return FALSE; label = GTK_LABEL (widget); if (!gtk_label_get_selectable (label)) return FALSE; if (gtk_label_get_selection_bounds (label, &start, &end)) { gtk_label_select_region (label, start_pos, end_pos); return TRUE; } else return FALSE; }
static AtkObject* gail_notebook_ref_child (AtkObject *obj, gint i) { AtkObject *accessible = NULL; GailNotebook *gail_notebook; GtkNotebook *gtk_notebook; GtkWidget *widget; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (obj)); if (widget == NULL) /* * State is defunct */ return NULL; gail_notebook = GAIL_NOTEBOOK (obj); gtk_notebook = GTK_NOTEBOOK (widget); if (gail_notebook->page_count < gtk_notebook_get_n_pages (gtk_notebook)) check_cache (gail_notebook, gtk_notebook); accessible = find_child_in_list (gail_notebook->page_cache, i); if (accessible != NULL) g_object_ref (accessible); return accessible; }
static void gail_label_get_character_extents (AtkText *text, gint offset, gint *x, gint *y, gint *width, gint *height, AtkCoordType coords) { GtkWidget *widget; GtkLabel *label; PangoRectangle char_rect; const gchar *label_text; gint index, x_layout, y_layout; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text)); if (widget == NULL) /* State is defunct */ return; label = GTK_LABEL (widget); gtk_label_get_layout_offsets (label, &x_layout, &y_layout); label_text = gtk_label_get_text (label); index = g_utf8_offset_to_pointer (label_text, offset) - label_text; pango_layout_index_to_pos (gtk_label_get_layout (label), index, &char_rect); gail_misc_get_extents_from_pango_rectangle (widget, &char_rect, x_layout, y_layout, x, y, width, height, coords); }
static gboolean gail_notebook_check_focus_tab (gpointer data) { GtkWidget *widget; AtkObject *atk_obj; gint focus_page_num, old_focus_page_num; GailNotebook *gail_notebook; GtkNotebook *gtk_notebook; atk_obj = ATK_OBJECT (data); gail_notebook = GAIL_NOTEBOOK (atk_obj); widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (atk_obj)); gtk_notebook = GTK_NOTEBOOK (widget); gail_notebook->idle_focus_id = 0; focus_page_num = gtk_notebook_get_current_page (gtk_notebook); if (focus_page_num == -1) return FALSE; old_focus_page_num = gail_notebook->focus_tab_page; gail_notebook->focus_tab_page = focus_page_num; if (old_focus_page_num != focus_page_num) { AtkObject *obj; obj = atk_object_ref_accessible_child (atk_obj, focus_page_num); atk_focus_tracker_notify (obj); g_object_unref (obj); } return FALSE; }
static gint gail_label_get_offset_at_point (AtkText *text, gint x, gint y, AtkCoordType coords) { GtkWidget *widget; GtkLabel *label; const gchar *label_text; gint index, x_layout, y_layout; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (text)); if (widget == NULL) /* State is defunct */ return -1; label = GTK_LABEL (widget); gtk_label_get_layout_offsets (label, &x_layout, &y_layout); index = gail_misc_get_index_at_point_in_layout (widget, gtk_label_get_layout (label), x_layout, y_layout, x, y, coords); label_text = gtk_label_get_text (label); if (index == -1) { if (coords == ATK_XY_WINDOW || coords == ATK_XY_SCREEN) return g_utf8_strlen (label_text, -1); return index; } else return g_utf8_pointer_to_offset (label_text, label_text + index); }