static void gtk_check_menu_item_accessible_notify_gtk (GObject *obj, GParamSpec *pspec) { GtkCheckMenuItem *check_menu_item = GTK_CHECK_MENU_ITEM (obj); AtkObject *atk_obj; gboolean sensitive; gboolean inconsistent; gboolean active; atk_obj = gtk_widget_get_accessible (GTK_WIDGET (check_menu_item)); sensitive = gtk_widget_get_sensitive (GTK_WIDGET (check_menu_item)); inconsistent = gtk_check_menu_item_get_inconsistent (check_menu_item); active = gtk_check_menu_item_get_active (check_menu_item); if (strcmp (pspec->name, "inconsistent") == 0) { atk_object_notify_state_change (atk_obj, ATK_STATE_INDETERMINATE, inconsistent); atk_object_notify_state_change (atk_obj, ATK_STATE_ENABLED, (sensitive && !inconsistent)); } else if (strcmp (pspec->name, "sensitive") == 0) { /* Need to override gailwidget behavior of notifying for ENABLED */ atk_object_notify_state_change (atk_obj, ATK_STATE_SENSITIVE, sensitive); atk_object_notify_state_change (atk_obj, ATK_STATE_ENABLED, (sensitive && !inconsistent)); } else if (strcmp (pspec->name, "active") == 0) { atk_object_notify_state_change (atk_obj, ATK_STATE_CHECKED, active); } else GTK_WIDGET_ACCESSIBLE_CLASS (gtk_check_menu_item_accessible_parent_class)->notify_gtk (obj, pspec); }
static void gtk_boolean_cell_accessible_update_cache (GtkCellAccessible *cell, gboolean emit_signal) { GtkBooleanCellAccessible *boolean_cell = GTK_BOOLEAN_CELL_ACCESSIBLE (cell); gboolean active; gboolean sensitive; GtkCellRenderer *renderer; g_object_get (cell, "renderer", &renderer, NULL); g_object_get (renderer, "active", &active, "sensitive", &sensitive, NULL); g_object_unref (renderer); if (boolean_cell->priv->cell_value != active) { boolean_cell->priv->cell_value = !boolean_cell->priv->cell_value; if (emit_signal) atk_object_notify_state_change (ATK_OBJECT (cell), ATK_STATE_CHECKED, active); } if (boolean_cell->priv->cell_sensitive != sensitive) { boolean_cell->priv->cell_sensitive = !boolean_cell->priv->cell_sensitive; if (emit_signal) atk_object_notify_state_change (ATK_OBJECT (cell), ATK_STATE_SENSITIVE, sensitive); } }
static void gtk_expander_accessible_notify_gtk (GObject *obj, GParamSpec *pspec) { AtkObject* atk_obj; GtkExpander *expander; expander = GTK_EXPANDER (obj); atk_obj = gtk_widget_get_accessible (GTK_WIDGET (expander)); ; if (g_strcmp0 (pspec->name, "label") == 0) { if (atk_obj->name == NULL) g_object_notify (G_OBJECT (atk_obj), "accessible-name"); g_signal_emit_by_name (atk_obj, "visible-data-changed"); } else if (g_strcmp0 (pspec->name, "expanded") == 0) { atk_object_notify_state_change (atk_obj, ATK_STATE_CHECKED, gtk_expander_get_expanded (expander)); atk_object_notify_state_change (atk_obj, ATK_STATE_EXPANDED, gtk_expander_get_expanded (expander)); g_signal_emit_by_name (atk_obj, "visible-data-changed"); } else GTK_WIDGET_ACCESSIBLE_CLASS (gtk_expander_accessible_parent_class)->notify_gtk (obj, pspec); }
static void maybeEmitTextFocusChange(RefPtr<AccessibilityObject>&& object) { // This static variable is needed to keep track of the old object // as per previous calls to this function, in order to properly // decide whether to emit some signals or not. static NeverDestroyed<RefPtr<AccessibilityObject>> oldObject; // Ensure the oldObject belongs to the same document that the // current object so further comparisons make sense. Otherwise, // just reset oldObject to 0 so it won't be taken into account in // the immediately following call to this function. if (object && oldObject.get() && oldObject.get()->document() != object->document()) oldObject.get() = nullptr; AtkObject* axObject = object ? object->wrapper() : 0; AtkObject* oldAxObject = oldObject.get() ? oldObject.get()->wrapper() : nullptr; if (axObject != oldAxObject) { if (oldAxObject && ATK_IS_TEXT(oldAxObject)) { g_signal_emit_by_name(oldAxObject, "focus-event", false); atk_object_notify_state_change(oldAxObject, ATK_STATE_FOCUSED, false); } if (axObject && ATK_IS_TEXT(axObject)) { g_signal_emit_by_name(axObject, "focus-event", true); atk_object_notify_state_change(axObject, ATK_STATE_FOCUSED, true); } } // Update pointer to last focused object. oldObject.get() = WTFMove(object); }
static void gtk_boolean_cell_accessible_update_cache (GtkCellAccessible *cell) { GtkBooleanCellAccessible *boolean_cell = GTK_BOOLEAN_CELL_ACCESSIBLE (cell); gboolean active; gboolean sensitive; g_object_get (G_OBJECT (GTK_RENDERER_CELL_ACCESSIBLE (cell)->renderer), "active", &active, "sensitive", &sensitive, NULL); if (boolean_cell->cell_value != active) { boolean_cell->cell_value = !boolean_cell->cell_value; atk_object_notify_state_change (ATK_OBJECT (cell), ATK_STATE_CHECKED, active); } if (boolean_cell->cell_sensitive != sensitive) { boolean_cell->cell_sensitive = !boolean_cell->cell_sensitive; atk_object_notify_state_change (ATK_OBJECT (cell), ATK_STATE_CHECKED, sensitive); } }
static void gail_toggle_button_real_notify_gtk (GObject *obj, GParamSpec *pspec) { GtkToggleButton *toggle_button = GTK_TOGGLE_BUTTON (obj); AtkObject *atk_obj; atk_obj = gtk_widget_get_accessible (GTK_WIDGET (toggle_button)); if (strcmp (pspec->name, "inconsistent") == 0) atk_object_notify_state_change (atk_obj, ATK_STATE_ENABLED, (gtk_widget_get_sensitive (GTK_WIDGET (toggle_button)) && !gtk_toggle_button_get_inconsistent (toggle_button))); else if (strcmp (pspec->name, "sensitive") == 0) { /* Need to override gailwidget behavior of notifying for ENABLED */ gboolean sensitive; gboolean enabled; sensitive = gtk_widget_get_sensitive (GTK_WIDGET (toggle_button)); enabled = sensitive && !gtk_toggle_button_get_inconsistent (toggle_button); atk_object_notify_state_change (atk_obj, ATK_STATE_SENSITIVE, sensitive); atk_object_notify_state_change (atk_obj, ATK_STATE_ENABLED, enabled); } else GAIL_WIDGET_CLASS (gail_toggle_button_parent_class)->notify_gtk (obj, pspec); }
void AXObjectCache::frameLoadingEventPlatformNotification(AccessibilityObject* object, AXLoadingEvent loadingEvent) { if (!object) return; AtkObject* axObject = object->wrapper(); if (!axObject || !ATK_IS_DOCUMENT(axObject)) return; switch (loadingEvent) { case AXObjectCache::AXLoadingStarted: atk_object_notify_state_change(axObject, ATK_STATE_BUSY, true); break; case AXObjectCache::AXLoadingReloaded: atk_object_notify_state_change(axObject, ATK_STATE_BUSY, true); g_signal_emit_by_name(axObject, "reload"); break; case AXObjectCache::AXLoadingFailed: g_signal_emit_by_name(axObject, "load-stopped"); atk_object_notify_state_change(axObject, ATK_STATE_BUSY, false); break; case AXObjectCache::AXLoadingFinished: g_signal_emit_by_name(axObject, "load-complete"); atk_object_notify_state_change(axObject, ATK_STATE_BUSY, false); break; } }
static void gtk_toggle_button_accessible_notify_gtk (GObject *obj, GParamSpec *pspec) { GtkToggleButton *toggle_button = GTK_TOGGLE_BUTTON (obj); AtkObject *atk_obj; gboolean sensitive; gboolean inconsistent; atk_obj = gtk_widget_get_accessible (GTK_WIDGET (toggle_button)); sensitive = gtk_widget_get_sensitive (GTK_WIDGET (toggle_button)); inconsistent = gtk_toggle_button_get_inconsistent (toggle_button); if (strcmp (pspec->name, "inconsistent") == 0) { atk_object_notify_state_change (atk_obj, ATK_STATE_INDETERMINATE, inconsistent); atk_object_notify_state_change (atk_obj, ATK_STATE_ENABLED, (sensitive && !inconsistent)); } else if (strcmp (pspec->name, "sensitive") == 0) { /* Need to override gailwidget behavior of notifying for ENABLED */ atk_object_notify_state_change (atk_obj, ATK_STATE_SENSITIVE, sensitive); atk_object_notify_state_change (atk_obj, ATK_STATE_ENABLED, (sensitive && !inconsistent)); } else GTK_WIDGET_ACCESSIBLE_CLASS (gtk_toggle_button_accessible_parent_class)->notify_gtk (obj, pspec); }
/** * @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); }
void AXObjectCache::platformHandleFocusedUIElementChanged(Node* oldFocusedNode, Node* newFocusedNode) { RefPtr<AccessibilityObject> oldObject = getOrCreate(oldFocusedNode); if (oldObject) { g_signal_emit_by_name(oldObject->wrapper(), "focus-event", false); atk_object_notify_state_change(oldObject->wrapper(), ATK_STATE_FOCUSED, false); } RefPtr<AccessibilityObject> newObject = getOrCreate(newFocusedNode); if (newObject) { g_signal_emit_by_name(newObject->wrapper(), "focus-event", true); atk_object_notify_state_change(newObject->wrapper(), ATK_STATE_FOCUSED, true); } }
/* This function is the default implementation for the notify_gtk * vfunc which gets called when a property changes value on the * GtkWidget associated with a GtkWidgetAccessible. It constructs * an AtkPropertyValues structure and emits a "property_changed" * signal which causes the user specified AtkPropertyChangeHandler * to be called. */ static void gtk_widget_accessible_notify_gtk (GObject *obj, GParamSpec *pspec) { GtkWidget* widget = GTK_WIDGET (obj); AtkObject* atk_obj = gtk_widget_get_accessible (widget); AtkState state; gboolean value; if (g_strcmp0 (pspec->name, "has-focus") == 0) /* * We use focus-in-event and focus-out-event signals to catch * focus changes so we ignore this. */ return; else if (g_strcmp0 (pspec->name, "tooltip-text") == 0) { gtk_widget_accessible_update_tooltip (GTK_WIDGET_ACCESSIBLE (atk_obj), widget); return; } else if (g_strcmp0 (pspec->name, "visible") == 0) { state = ATK_STATE_VISIBLE; value = gtk_widget_get_visible (widget); } else if (g_strcmp0 (pspec->name, "sensitive") == 0) { state = ATK_STATE_SENSITIVE; value = gtk_widget_get_sensitive (widget); } else if (g_strcmp0 (pspec->name, "orientation") == 0 && GTK_IS_ORIENTABLE (widget)) { GtkOrientable *orientable; orientable = GTK_ORIENTABLE (widget); state = ATK_STATE_HORIZONTAL; value = (gtk_orientable_get_orientation (orientable) == GTK_ORIENTATION_HORIZONTAL); } else return; atk_object_notify_state_change (atk_obj, state, value); if (state == ATK_STATE_SENSITIVE) atk_object_notify_state_change (atk_obj, ATK_STATE_ENABLED, value); if (state == ATK_STATE_HORIZONTAL) atk_object_notify_state_change (atk_obj, ATK_STATE_VERTICAL, !value); }
void AXObjectCache::postPlatformNotification(AccessibilityObject* coreObject, AXNotification notification) { AtkObject* axObject = coreObject->wrapper(); if (!axObject) return; switch (notification) { case AXCheckedStateChanged: if (!coreObject->isCheckboxOrRadio() && !coreObject->isSwitch()) return; atk_object_notify_state_change(axObject, ATK_STATE_CHECKED, coreObject->isChecked()); break; case AXSelectedChildrenChanged: case AXMenuListValueChanged: // Accessible focus claims should not be made if the associated widget is not focused. if (notification == AXMenuListValueChanged && coreObject->isMenuList() && coreObject->isFocused()) { g_signal_emit_by_name(axObject, "focus-event", true); atk_object_notify_state_change(axObject, ATK_STATE_FOCUSED, true); } notifyChildrenSelectionChange(coreObject); break; case AXValueChanged: if (ATK_IS_VALUE(axObject)) { AtkPropertyValues propertyValues; propertyValues.property_name = "accessible-value"; memset(&propertyValues.new_value, 0, sizeof(GValue)); #if ATK_CHECK_VERSION(2,11,92) double value; atk_value_get_value_and_text(ATK_VALUE(axObject), &value, nullptr); g_value_set_double(g_value_init(&propertyValues.new_value, G_TYPE_DOUBLE), value); #else atk_value_get_current_value(ATK_VALUE(axObject), &propertyValues.new_value); #endif g_signal_emit_by_name(ATK_OBJECT(axObject), "property-change::accessible-value", &propertyValues, NULL); } break; case AXInvalidStatusChanged: atk_object_notify_state_change(axObject, ATK_STATE_INVALID_ENTRY, coreObject->invalidStatus() != "false"); break; default: break; } }
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 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; }
/** * @brief Callback for on_changed event * This will be called to notify AtkObject about object state change * * @param data callback data * @param obj object source * @param event_info event info */ static void eail_check_atk_notify_change(void *data, Evas_Object *obj, void *event_info) { Eina_Bool state = elm_check_state_get(obj); atk_object_notify_state_change(ATK_OBJECT(data), ATK_STATE_CHECKED, state == EINA_TRUE ? TRUE : FALSE); }
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; }
nsresult nsAccessibleWrap::FireAtkStateChangeEvent(AccEvent* aEvent, AtkObject *aObject) { MAI_LOG_DEBUG(("\n\nReceived: EVENT_STATE_CHANGE\n")); AccStateChangeEvent* event = downcast_accEvent(aEvent); NS_ENSURE_TRUE(event, NS_ERROR_FAILURE); PRUint32 state = event->GetState(); PRBool isExtra = event->IsExtraState(); PRBool isEnabled = event->IsStateEnabled(); PRInt32 stateIndex = AtkStateMap::GetStateIndexFor(state); if (stateIndex >= 0) { const AtkStateMap *atkStateMap = isExtra ? gAtkStateMapExt : gAtkStateMap; NS_ASSERTION(atkStateMap[stateIndex].stateMapEntryType != kNoSuchState, "No such state"); if (atkStateMap[stateIndex].atkState != kNone) { NS_ASSERTION(atkStateMap[stateIndex].stateMapEntryType != kNoStateChange, "State changes should not fired for this state"); if (atkStateMap[stateIndex].stateMapEntryType == kMapOpposite) isEnabled = !isEnabled; // Fire state change for first state if there is one to map atk_object_notify_state_change(aObject, atkStateMap[stateIndex].atkState, isEnabled); } } return NS_OK; }
static void gail_window_real_initialize (AtkObject *obj, gpointer data) { GtkWidget *widget = GTK_WIDGET (data); GailWindow *window; /* * A GailWindow can be created for a GtkHandleBox or a GtkWindow */ if (!GTK_IS_WINDOW (widget) && !GTK_IS_HANDLE_BOX (widget)) gail_return_if_fail (FALSE); ATK_OBJECT_CLASS (gail_window_parent_class)->initialize (obj, data); window = GAIL_WINDOW (obj); window->name_change_handler = 0; window->previous_name = g_strdup (gtk_window_get_title (GTK_WINDOW (data))); g_signal_connect (data, "window_state_event", G_CALLBACK (gail_window_state_event_gtk), NULL); g_object_set_data (G_OBJECT (obj), "atk-component-layer", GINT_TO_POINTER (ATK_LAYER_WINDOW)); if (GTK_IS_FILE_SELECTION (widget)) obj->role = ATK_ROLE_FILE_CHOOSER; else if (GTK_IS_COLOR_SELECTION_DIALOG (widget)) obj->role = ATK_ROLE_COLOR_CHOOSER; else if (GTK_IS_FONT_SELECTION_DIALOG (widget)) obj->role = ATK_ROLE_FONT_CHOOSER; else if (GTK_IS_MESSAGE_DIALOG (widget)) obj->role = ATK_ROLE_ALERT; else if (GTK_IS_DIALOG (widget)) obj->role = ATK_ROLE_DIALOG; else { const gchar *name; name = gtk_widget_get_name (widget); if (name && (!strcmp (name, "gtk-tooltip") || !strcmp (name, "gtk-tooltips"))) obj->role = ATK_ROLE_TOOL_TIP; else if (GTK_IS_PLUG (widget)) obj->role = ATK_ROLE_PANEL; else if (GTK_WINDOW (widget)->type == GTK_WINDOW_POPUP) obj->role = ATK_ROLE_WINDOW; else obj->role = ATK_ROLE_FRAME; } /* * Notify that tooltip is showing */ if (obj->role == ATK_ROLE_TOOL_TIP && gtk_widget_get_mapped (widget)) atk_object_notify_state_change (obj, ATK_STATE_SHOWING, 1); }
static void nux_area_accessible_focus_handler(AtkObject* accessible, gboolean focus_in) { g_return_if_fail(NUX_IS_AREA_ACCESSIBLE(accessible)); atk_object_notify_state_change(accessible, ATK_STATE_FOCUSED, focus_in); }
static VALUE rbatkobj_notify_state_change(VALUE self, VALUE state, VALUE value) { atk_object_notify_state_change(_SELF(self), RVAL2GENUM(state, ATK_TYPE_STATE_TYPE), RVAL2CBOOL(value)); return self; }
static void gail_expander_real_notify_gtk (GObject *obj, GParamSpec *pspec) { AtkObject* atk_obj; GtkExpander *expander; GailExpander *gail_expander; expander = GTK_EXPANDER (obj); atk_obj = gtk_widget_get_accessible (GTK_WIDGET (expander)); ; if (strcmp (pspec->name, "label") == 0) { const gchar* label_text; label_text = gail_expander_get_full_text (expander); gail_expander = GAIL_EXPANDER (atk_obj); if (gail_expander->textutil) gail_text_util_text_setup (gail_expander->textutil, label_text); if (atk_obj->name == NULL) { /* * The label has changed so notify a change in accessible-name */ g_object_notify (G_OBJECT (atk_obj), "accessible-name"); } /* * The label is the only property which can be changed */ g_signal_emit_by_name (atk_obj, "visible_data_changed"); } else if (strcmp (pspec->name, "expanded") == 0) { atk_object_notify_state_change (atk_obj, ATK_STATE_CHECKED, gtk_expander_get_expanded (expander)); atk_object_notify_state_change (atk_obj, ATK_STATE_EXPANDED, gtk_expander_get_expanded (expander)); g_signal_emit_by_name (atk_obj, "visible_data_changed"); } else GAIL_WIDGET_CLASS (gail_expander_parent_class)->notify_gtk (obj, pspec); }
static void state_changed_cb (GtkWidget *widget, GtkStateFlags previous_flags) { AtkObject *accessible; GtkStateFlags flags; gboolean was_active; gboolean active; flags = gtk_widget_get_state_flags (widget); was_active = (previous_flags & GTK_STATE_FLAG_ACTIVE) != 0; active = (flags & GTK_STATE_FLAG_ACTIVE) != 0; accessible = gtk_widget_get_accessible (widget); if (active && !was_active) atk_object_notify_state_change (accessible, ATK_STATE_ARMED, TRUE); else if (!active && was_active) atk_object_notify_state_change (accessible, ATK_STATE_ARMED, FALSE); }
static void atk_gobject_accessible_dispose (gpointer data) { g_return_if_fail (ATK_IS_GOBJECT_ACCESSIBLE (data)); g_object_set_qdata (G_OBJECT (data), quark_object, NULL); atk_object_notify_state_change (ATK_OBJECT (data), ATK_STATE_DEFUNCT, TRUE); g_object_unref (data); }
static void eel_accessibility_destroy (gpointer data, GObject *where_the_object_was) { g_object_set_qdata (G_OBJECT (data), get_quark_gobject (), NULL); atk_object_notify_state_change (ATK_OBJECT (data), ATK_STATE_DEFUNCT, TRUE); g_object_unref (data); }
/* Translate GtkWidget mapped state into AtkObject showing */ static gint map_cb (GtkWidget *widget) { AtkObject *accessible; accessible = gtk_widget_get_accessible (widget); atk_object_notify_state_change (accessible, ATK_STATE_SHOWING, gtk_widget_get_mapped (widget)); return 1; }
void AXObjectCache::postPlatformNotification(AccessibilityObject* coreObject, AXNotification notification) { AtkObject* axObject = coreObject->wrapper(); if (!axObject) return; switch (notification) { case AXCheckedStateChanged: if (!coreObject->isCheckboxOrRadio()) return; atk_object_notify_state_change(axObject, ATK_STATE_CHECKED, coreObject->isChecked()); break; case AXSelectedChildrenChanged: case AXMenuListValueChanged: if (notification == AXMenuListValueChanged && coreObject->isMenuList()) { g_signal_emit_by_name(axObject, "focus-event", true); atk_object_notify_state_change(axObject, ATK_STATE_FOCUSED, true); } notifyChildrenSelectionChange(coreObject); break; case AXValueChanged: if (ATK_IS_VALUE(axObject)) { AtkPropertyValues propertyValues; propertyValues.property_name = "accessible-value"; memset(&propertyValues.new_value, 0, sizeof(GValue)); atk_value_get_current_value(ATK_VALUE(axObject), &propertyValues.new_value); g_signal_emit_by_name(ATK_OBJECT(axObject), "property-change::accessible-value", &propertyValues, NULL); } break; case AXInvalidStatusChanged: atk_object_notify_state_change(axObject, ATK_STATE_INVALID_ENTRY, coreObject->invalidStatus() != "false"); break; default: break; } }
static gboolean gail_window_real_focus_gtk (GtkWidget *widget, GdkEventFocus *event) { AtkObject* obj; obj = gtk_widget_get_accessible (widget); atk_object_notify_state_change (obj, ATK_STATE_ACTIVE, event->in); return FALSE; }
static gboolean gail_window_state_event_gtk (GtkWidget *widget, GdkEventWindowState *event) { AtkObject* obj; obj = gtk_widget_get_accessible (widget); atk_object_notify_state_change (obj, ATK_STATE_ICONIFIED, (event->new_window_state & GDK_WINDOW_STATE_ICONIFIED) != 0); return FALSE; }
static void menu_item_selection (GtkItem *item, gboolean selected) { AtkObject *obj, *parent; gint i; obj = gtk_widget_get_accessible (GTK_WIDGET (item)); atk_object_notify_state_change (obj, ATK_STATE_SELECTED, selected); for (i = 0; i < atk_object_get_n_accessible_children (obj); i++) { AtkObject *child; child = atk_object_ref_accessible_child (obj, i); atk_object_notify_state_change (child, ATK_STATE_SHOWING, selected); g_object_unref (child); } parent = atk_object_get_parent (obj); g_signal_emit_by_name (parent, "selection_changed"); }
static void gtk_widget_accessible_focus_event (AtkObject *obj, gboolean focus_in) { AtkObject *focus_obj; focus_obj = g_object_get_data (G_OBJECT (obj), "gail-focus-object"); if (focus_obj == NULL) focus_obj = obj; atk_object_notify_state_change (focus_obj, ATK_STATE_FOCUSED, focus_in); }