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_scale_button_accessible_notify_gtk (GObject *obj, GParamSpec *pspec) { GtkScaleButton *scale_button; GtkScaleButtonAccessible *accessible; scale_button = GTK_SCALE_BUTTON (obj); accessible = GTK_SCALE_BUTTON_ACCESSIBLE (gtk_widget_get_accessible (GTK_WIDGET (scale_button))); if (strcmp (pspec->name, "adjustment") == 0) { GtkAdjustment* adjustment; adjustment = gtk_scale_button_get_adjustment (scale_button); g_signal_connect (adjustment, "value-changed", G_CALLBACK (gtk_scale_button_accessible_value_changed), accessible); } else { GTK_WIDGET_ACCESSIBLE_CLASS (gtk_scale_button_accessible_parent_class)->notify_gtk (obj, pspec); } }
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 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); }
static void gtk_scale_button_accessible_class_init (GtkScaleButtonAccessibleClass *klass) { AtkObjectClass *atk_object_class = ATK_OBJECT_CLASS (klass); GtkWidgetAccessibleClass *widget_class = GTK_WIDGET_ACCESSIBLE_CLASS (klass); atk_object_class->initialize = gtk_scale_button_accessible_initialize; widget_class->notify_gtk = gtk_scale_button_accessible_notify_gtk; }
static void gtk_label_accessible_notify_gtk (GObject *obj, GParamSpec *pspec) { GtkWidget *widget = GTK_WIDGET (obj); AtkObject* atk_obj = gtk_widget_get_accessible (widget); GtkLabelAccessible *accessible; gint length; accessible = GTK_LABEL_ACCESSIBLE (atk_obj); if (g_strcmp0 (pspec->name, "label") == 0) { const gchar *text; text = gtk_label_get_text (GTK_LABEL (widget)); if (g_strcmp0 (accessible->text, text) == 0) return; /* Create a delete text and an insert text signal */ length = g_utf8_strlen (accessible->text, -1); if (length > 0) g_signal_emit_by_name (atk_obj, "text-changed::delete", 0, length); g_free (accessible->text); accessible->text = g_strdup (text); length = g_utf8_strlen (accessible->text, -1); if (length > 0) g_signal_emit_by_name (atk_obj, "text-changed::insert", 0, length); 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"); g_signal_emit_by_name (atk_obj, "visible-data-changed"); } else if (g_strcmp0 (pspec->name, "cursor-position") == 0) { g_signal_emit_by_name (atk_obj, "text-caret-moved", _gtk_label_get_cursor_position (GTK_LABEL (widget))); if (check_for_selection_change (accessible, GTK_LABEL (widget))) g_signal_emit_by_name (atk_obj, "text-selection-changed"); } else if (g_strcmp0 (pspec->name, "selection-bound") == 0) { if (check_for_selection_change (accessible, GTK_LABEL (widget))) g_signal_emit_by_name (atk_obj, "text-selection-changed"); } else GTK_WIDGET_ACCESSIBLE_CLASS (_gtk_label_accessible_parent_class)->notify_gtk (obj, pspec); }
static void gtk_progress_bar_accessible_notify_gtk (GObject *obj, GParamSpec *pspec) { GtkWidget *widget = GTK_WIDGET (obj); AtkObject *accessible; accessible = gtk_widget_get_accessible (widget); if (strcmp (pspec->name, "fraction") == 0) g_object_notify (G_OBJECT (accessible), "accessible-value"); else GTK_WIDGET_ACCESSIBLE_CLASS (_gtk_progress_bar_accessible_parent_class)->notify_gtk (obj, pspec); }
static void gtk_entry_accessible_notify_gtk (GObject *obj, GParamSpec *pspec) { GtkWidget *widget; AtkObject* atk_obj; GtkEntry* gtk_entry; GtkEntryAccessible* entry; widget = GTK_WIDGET (obj); atk_obj = gtk_widget_get_accessible (widget); gtk_entry = GTK_ENTRY (widget); entry = GTK_ENTRY_ACCESSIBLE (atk_obj); if (g_strcmp0 (pspec->name, "cursor-position") == 0) { if (check_for_selection_change (entry, gtk_entry)) g_signal_emit_by_name (atk_obj, "text-selection-changed"); /* * The entry cursor position has moved so generate the signal. */ g_signal_emit_by_name (atk_obj, "text-caret-moved", entry->cursor_position); } else if (g_strcmp0 (pspec->name, "selection-bound") == 0) { if (check_for_selection_change (entry, gtk_entry)) g_signal_emit_by_name (atk_obj, "text-selection-changed"); } else if (g_strcmp0 (pspec->name, "editable") == 0) { gboolean value; g_object_get (obj, "editable", &value, NULL); atk_object_notify_state_change (atk_obj, ATK_STATE_EDITABLE, value); } else if (g_strcmp0 (pspec->name, "visibility") == 0) { gboolean visibility; AtkRole new_role; visibility = gtk_entry_get_visibility (gtk_entry); new_role = visibility ? ATK_ROLE_TEXT : ATK_ROLE_PASSWORD_TEXT; atk_object_set_role (atk_obj, new_role); } else GTK_WIDGET_ACCESSIBLE_CLASS (_gtk_entry_accessible_parent_class)->notify_gtk (obj, pspec); }
static void gtk_menu_item_accessible_notify_gtk (GObject *obj, GParamSpec *pspec) { AtkObject* atk_obj; atk_obj = gtk_widget_get_accessible (GTK_WIDGET (obj)); if (strcmp (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 GTK_WIDGET_ACCESSIBLE_CLASS (_gtk_menu_item_accessible_parent_class)->notify_gtk (obj, pspec); }
static void gtk_range_accessible_notify_gtk (GObject *obj, GParamSpec *pspec) { GtkWidget *widget = GTK_WIDGET (obj); GtkAdjustment *adj; AtkObject *range; if (strcmp (pspec->name, "adjustment") == 0) { range = gtk_widget_get_accessible (widget); adj = gtk_range_get_adjustment (GTK_RANGE (widget)); g_signal_connect (adj, "value-changed", G_CALLBACK (gtk_range_accessible_value_changed), range); } else GTK_WIDGET_ACCESSIBLE_CLASS (gtk_range_accessible_parent_class)->notify_gtk (obj, pspec); }