From 52c1fb8dfed7a60db9aab756d1c067234b508316 Mon Sep 17 00:00:00 2001 From: Emmanuele Bassi Date: Fri, 17 Jul 2020 14:31:02 +0100 Subject: [PATCH] a11y: Implement role and state change in GtkSwitch Set the "switch" role, and update the "checked" state when the :active property is toggled. --- gtk/gtkswitch.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/gtk/gtkswitch.c b/gtk/gtkswitch.c index 64e9cc379b..9e4aff1bcb 100644 --- a/gtk/gtkswitch.c +++ b/gtk/gtkswitch.c @@ -606,6 +606,8 @@ gtk_switch_class_init (GtkSwitchClass *klass) g_object_class_override_property (gobject_class, PROP_ACTION_TARGET, "action-target"); gtk_widget_class_set_css_name (widget_class, I_("switch")); + + gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_SWITCH); } static void @@ -700,6 +702,10 @@ gtk_switch_set_active (GtkSwitch *self, g_object_notify_by_pspec (G_OBJECT (self), switch_props[PROP_ACTIVE]); + gtk_accessible_update_state (GTK_ACCESSIBLE (self), + GTK_ACCESSIBLE_STATE_CHECKED, is_active, + -1); + gtk_widget_queue_allocate (GTK_WIDGET (self)); } }