Apply some review feedback

Namely be sure to set the new role of the widget in all cases
and do it always, even when we need to recreate the AT context.
This commit is contained in:
Lukáš Tyrychtr
2024-02-16 13:55:58 +01:00
parent 86bec01640
commit 4a0b833548

View File

@@ -170,6 +170,25 @@ gtk_check_button_dispose (GObject *object)
G_OBJECT_CLASS (gtk_check_button_parent_class)->dispose (object);
}
static void
force_set_accessible_role (GtkCheckButton *button, GtkAccessibleRole role)
{
gboolean was_realized;
GtkWidget *widget = GTK_WIDGET (button);
GtkATContext *context = gtk_accessible_get_at_context (GTK_ACCESSIBLE (widget));
if (context)
was_realized = gtk_at_context_is_realized (context);
else
was_realized = FALSE;
if (was_realized)
gtk_at_context_unrealize (context);
gtk_widget_set_accessible_role (widget, role);
if (was_realized)
gtk_at_context_realize (context);
if (context)
g_object_unref (context);
}
static void
update_button_role (GtkCheckButton *self,
GtkButtonRole role)
@@ -185,6 +204,8 @@ update_button_role (GtkCheckButton *self,
g_quark_from_static_string ("radio"));
gtk_widget_add_css_class (GTK_WIDGET (self), "grouped");
force_set_accessible_role (self, GTK_ACCESSIBLE_ROLE_RADIO);
}
else
{
@@ -192,6 +213,8 @@ update_button_role (GtkCheckButton *self,
g_quark_from_static_string ("check"));
gtk_widget_remove_css_class (GTK_WIDGET (self), "grouped");
force_set_accessible_role (self, GTK_ACCESSIBLE_ROLE_CHECKBOX);
}
}
@@ -1055,7 +1078,7 @@ gtk_check_button_set_group (GtkCheckButton *self,
update_button_role (self, GTK_BUTTON_ROLE_CHECK);
gtk_widget_set_accessible_role (GTK_WIDGET (self), GTK_ACCESSIBLE_ROLE_CHECKBOX);
force_set_accessible_role (self, GTK_ACCESSIBLE_ROLE_CHECKBOX);
return;
}
@@ -1080,8 +1103,8 @@ gtk_check_button_set_group (GtkCheckButton *self,
update_button_role (self, GTK_BUTTON_ROLE_RADIO);
update_button_role (group, GTK_BUTTON_ROLE_RADIO);
gtk_widget_set_accessible_role (GTK_WIDGET (self), GTK_ACCESSIBLE_ROLE_RADIO);
gtk_widget_set_accessible_role (GTK_WIDGET (group), GTK_ACCESSIBLE_ROLE_RADIO);
force_set_accessible_role (self, GTK_ACCESSIBLE_ROLE_RADIO);
force_set_accessible_role (group, GTK_ACCESSIBLE_ROLE_RADIO);
g_object_notify_by_pspec (G_OBJECT (self), props[PROP_GROUP]);
}