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:
@@ -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]);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user