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 AtkStateSet * gtk_check_menu_item_accessible_ref_state_set (AtkObject *accessible) { AtkStateSet *state_set; GtkCheckMenuItem *check_menu_item; GtkWidget *widget; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible)); if (widget == NULL) return NULL; state_set = ATK_OBJECT_CLASS (gtk_check_menu_item_accessible_parent_class)->ref_state_set (accessible); check_menu_item = GTK_CHECK_MENU_ITEM (widget); if (gtk_check_menu_item_get_active (check_menu_item)) atk_state_set_add_state (state_set, ATK_STATE_CHECKED); if (gtk_check_menu_item_get_inconsistent (check_menu_item)) { atk_state_set_remove_state (state_set, ATK_STATE_ENABLED); atk_state_set_add_state (state_set, ATK_STATE_INDETERMINATE); } return state_set; }
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* gail_toggle_button_ref_state_set (AtkObject *accessible) { AtkStateSet *state_set; GtkToggleButton *toggle_button; GtkWidget *widget; state_set = ATK_OBJECT_CLASS (gail_toggle_button_parent_class)->ref_state_set (accessible); widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (accessible)); if (widget == NULL) return state_set; toggle_button = GTK_TOGGLE_BUTTON (widget); if (gtk_toggle_button_get_active (toggle_button)) atk_state_set_add_state (state_set, ATK_STATE_CHECKED); if (gtk_toggle_button_get_inconsistent (toggle_button)) { atk_state_set_remove_state (state_set, ATK_STATE_ENABLED); atk_state_set_add_state (state_set, ATK_STATE_INDETERMINATE); } return state_set; }
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; }
/* 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; }
/** * Wrapper for atk_state_set_remove_state(). */ static PyObject* _atkstateset_remove_state (PyAtkStateSet *self, PyObject *args) { AtkStateType val; debug ("_atkstateset_remove_state\n"); if (!PyArg_ParseTuple (args, "i:remove_state", &val)) return NULL; if (atk_state_set_remove_state (ATKSTATESET (self), val)) Py_RETURN_TRUE; Py_RETURN_FALSE; }
static AtkStateSet * gtk_icon_view_item_accessible_ref_state_set (AtkObject *obj) { GtkIconViewItemAccessible *item; GtkIconView *icon_view; item = GTK_ICON_VIEW_ITEM_ACCESSIBLE (obj); g_return_val_if_fail (item->state_set, NULL); if (!item->widget) return NULL; icon_view = GTK_ICON_VIEW (item->widget); if (icon_view->priv->cursor_item == item->item) atk_state_set_add_state (item->state_set, ATK_STATE_FOCUSED); else atk_state_set_remove_state (item->state_set, ATK_STATE_FOCUSED); if (item->item->selected) atk_state_set_add_state (item->state_set, ATK_STATE_SELECTED); else atk_state_set_remove_state (item->state_set, ATK_STATE_SELECTED); return g_object_ref (item->state_set); }
static AtkStateSet * gtk_boolean_cell_accessible_ref_state_set (AtkObject *accessible) { GtkBooleanCellAccessible *cell = GTK_BOOLEAN_CELL_ACCESSIBLE (accessible); AtkStateSet *state_set; state_set = ATK_OBJECT_CLASS (gtk_boolean_cell_accessible_parent_class)->ref_state_set (accessible); if (cell->priv->cell_value) atk_state_set_add_state (state_set, ATK_STATE_CHECKED); if (cell->priv->cell_sensitive) atk_state_set_add_state (state_set, ATK_STATE_SENSITIVE); else atk_state_set_remove_state (state_set, ATK_STATE_SENSITIVE); return state_set; }
static gboolean my_atk_selection_clear_selection (AtkSelection *selection) { MyAtkSelection *self = MY_ATK_SELECTION(selection); if (!self) return FALSE; AtkObject *child = NULL; AtkStateSet *states = NULL; int i; int 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); atk_state_set_remove_state (states, ATK_STATE_SELECTED); } return TRUE; }
static AtkStateSet * gtk_button_accessible_ref_state_set (AtkObject *obj) { AtkStateSet *state_set; GtkWidget *widget; widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (obj)); if (widget == NULL) return NULL; state_set = ATK_OBJECT_CLASS (gtk_button_accessible_parent_class)->ref_state_set (obj); if ((gtk_widget_get_state_flags (widget) & GTK_STATE_FLAG_ACTIVE) != 0) atk_state_set_add_state (state_set, ATK_STATE_ARMED); if (!gtk_widget_get_can_focus (widget)) atk_state_set_remove_state (state_set, ATK_STATE_SELECTABLE); return state_set; }
static AtkStateSet* gail_check_sub_menu_item_ref_state_set (AtkObject *accessible) { AtkStateSet *state_set; GtkCheckMenuItem *check_menu_item; GtkWidget *widget; state_set = ATK_OBJECT_CLASS (gail_check_sub_menu_item_parent_class)->ref_state_set (accessible); widget = GTK_ACCESSIBLE (accessible)->widget; if (widget == NULL) return state_set; check_menu_item = GTK_CHECK_MENU_ITEM (widget); if (gtk_check_menu_item_get_active (check_menu_item)) atk_state_set_add_state (state_set, ATK_STATE_CHECKED); if (gtk_check_menu_item_get_inconsistent (check_menu_item)) atk_state_set_remove_state (state_set, ATK_STATE_ENABLED); return state_set; }
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 VALUE rg_remove_state(VALUE self, VALUE type) { return CBOOL2RVAL(atk_state_set_remove_state(_SELF(self), RVAL2GENUM(type, ATK_TYPE_STATE_TYPE))); }
static gboolean test_state_set (void) { AtkStateSet *state_set1, *state_set2, *state_set3; AtkStateType state_array[3]; gboolean b_val; state_set1 = atk_state_set_new (); b_val = atk_state_set_is_empty (state_set1); if (b_val) { g_print ("New state set is not empty\n"); return FALSE; } b_val = atk_state_set_add_state (state_set1, ATK_STATE_ACTIVE); if (!b_val) { g_print ("Adding new state set failed\n"); return FALSE; } b_val = atk_state_set_is_empty (state_set1); if (!b_val) { g_print ("New state set is empty when it should not be\n"); return FALSE; } b_val = atk_state_set_add_state (state_set1, ATK_STATE_ACTIVE); if (b_val) { g_print ("Adding new state set succeeded when it should not have\n"); return FALSE; } state_array[0] = ATK_STATE_ACTIVE; state_array[1] = ATK_STATE_VISIBLE; state_array[2] = ATK_STATE_BUSY; atk_state_set_add_states (state_set1, state_array, 3); b_val = atk_state_set_contains_state (state_set1, ATK_STATE_ACTIVE); if (!b_val) { g_print ("Contains state failed for ATK_STATE_ACTIVE but should not have\n"); return FALSE; } b_val = atk_state_set_contains_state (state_set1, ATK_STATE_VISIBLE); if (!b_val) { g_print ("Contains state failed for ATK_STATE_VISIBLE but should not have\n"); return FALSE; } b_val = atk_state_set_contains_state (state_set1, ATK_STATE_BUSY); if (!b_val) { g_print ("Contains state failed for ATK_STATE_BUSY but should not have\n"); return FALSE; } b_val = atk_state_set_contains_state (state_set1, ATK_STATE_VERTICAL); if (b_val) { g_print ("Contains state succeeded for ATK_STATE_VERTICAL but should not have\n"); return FALSE; } atk_state_set_remove_state (state_set1, ATK_STATE_BUSY); b_val = atk_state_set_contains_state (state_set1, ATK_STATE_BUSY); if (b_val) { g_print ("Contains state succeeded for ATK_STATE_BUSY but should not have\n"); return FALSE; } b_val = atk_state_set_contains_state (state_set1, ATK_STATE_VISIBLE); if (!b_val) { g_print ("Contains state failed for ATK_STATE_VISIBLE but should not have\n"); return FALSE; } b_val = atk_state_set_contains_states (state_set1, state_array, 3); if (b_val) { g_print ("Contains states succeeded should not have\n"); return FALSE; } b_val = atk_state_set_contains_states (state_set1, state_array, 2); if (!b_val) { g_print ("Contains states failed should not have\n"); return FALSE; } state_array[0] = ATK_STATE_SINGLE_LINE; state_array[1] = ATK_STATE_VISIBLE; state_array[2] = ATK_STATE_VERTICAL; state_set2 = atk_state_set_new(); atk_state_set_add_states (state_set2, state_array, 3); state_set3 = atk_state_set_and_sets (state_set1, state_set2); b_val = atk_state_set_contains_state (state_set3, ATK_STATE_VISIBLE); if (!b_val) { g_print ("Contains state failed for ATK_STATE_VISIBLE after and but should not have\n"); return FALSE; } b_val = atk_state_set_contains_state (state_set3, ATK_STATE_BUSY); if (b_val) { g_print ("Contains state succeeded for ATK_STATE_BUSY after and but should not have\n"); return FALSE; } g_object_unref (state_set3); atk_state_set_remove_state (state_set1, ATK_STATE_VISIBLE); state_set3 = atk_state_set_and_sets (state_set1, state_set2); if (state_set3) { g_print ("state_set 3 is not NULL after and but should be\n"); return FALSE; } state_set3 = atk_state_set_or_sets (state_set1, state_set2); b_val = atk_state_set_contains_state (state_set3, ATK_STATE_VISIBLE); if (!b_val) { g_print ("Contains state failed for ATK_STATE_VISIBLE after or but should not have\n"); return FALSE; } b_val = atk_state_set_contains_state (state_set3, ATK_STATE_INVALID); if (b_val) { g_print ("Contains state succeeded for ATK_STATE_INVALID after or but should not have\n"); return FALSE; } g_object_unref (state_set3); b_val = atk_state_set_add_state (state_set1, ATK_STATE_VISIBLE); if (!b_val) { g_print ("Adding new state set failed\n"); return FALSE; } state_set3 = atk_state_set_xor_sets (state_set1, state_set2); b_val = atk_state_set_contains_state (state_set3, ATK_STATE_VISIBLE); if (b_val) { g_print ("Contains state succeeded for ATK_STATE_VISIBLE after xor but should not have\n"); return FALSE; } b_val = atk_state_set_contains_state (state_set3, ATK_STATE_ACTIVE); if (!b_val) { g_print ("Contains state failed for ATK_STATE_ACTIVE after xor but should not have\n"); return FALSE; } atk_state_set_clear_states (state_set1); b_val = atk_state_set_contains_state (state_set1, ATK_STATE_ACTIVE); if (b_val) { g_print ("Contains state succeeded for ATK_STATE_ACTIVE but should not have\n"); return FALSE; } g_object_unref (state_set1); g_object_unref (state_set2); g_object_unref (state_set3); return TRUE; }
static VALUE rg_remove_state(VALUE self, VALUE type) { return CBOOL2RVAL(atk_state_set_remove_state(_SELF(self), RVAL2ATKSTATETYPE(type))); }