a11y: exposing the proper button role while using toggle_mode on St.Button

https://bugzilla.gnome.org/show_bug.cgi?id=682366
This commit is contained in:
Alejandro Piñeiro 2012-08-24 17:18:31 +02:00
parent 6ea80eadd6
commit a1ecf459b3

View File

@ -777,14 +777,32 @@ st_button_accessible_notify_label_cb (StButton *button,
g_object_notify (G_OBJECT (accessible), "accessible-name"); g_object_notify (G_OBJECT (accessible), "accessible-name");
} }
static void
st_button_accessible_compute_role (AtkObject *accessible,
StButton *button)
{
atk_object_set_role (accessible, button->priv->is_toggle
? ATK_ROLE_TOGGLE_BUTTON : ATK_ROLE_PUSH_BUTTON);
}
static void
st_button_accessible_notify_toggle_mode_cb (StButton *button,
GParamSpec *psec,
AtkObject *accessible)
{
st_button_accessible_compute_role (accessible, button);
}
static void static void
st_button_accessible_initialize (AtkObject *obj, st_button_accessible_initialize (AtkObject *obj,
gpointer data) gpointer data)
{ {
ATK_OBJECT_CLASS (st_button_accessible_parent_class)->initialize (obj, data); ATK_OBJECT_CLASS (st_button_accessible_parent_class)->initialize (obj, data);
obj->role = ATK_ROLE_PUSH_BUTTON; st_button_accessible_compute_role (obj, ST_BUTTON (data));
g_signal_connect (data, "notify::label", g_signal_connect (data, "notify::label",
G_CALLBACK (st_button_accessible_notify_label_cb), obj); G_CALLBACK (st_button_accessible_notify_label_cb), obj);
g_signal_connect (data, "notify::toggle-mode",
G_CALLBACK (st_button_accessible_notify_toggle_mode_cb), obj);
} }