widget: Warn for abstract accessible roles
authorMatthias Clasen <mclasen@redhat.com>
Fri, 16 Jun 2023 19:14:57 +0000 (15:14 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 19 Jun 2023 22:38:32 +0000 (18:38 -0400)
These should not be used for widgets, so warn if
they are passed to gtk_widget_set_accessible_role()
or gtk_widget_class_set_accessible_role().

gtk/gtkwidget.c

index c33c4d4256ef773d2518b3b8343c4e57d627fc58..0246068460591428112f1919376644cf7c1e91bb 100644 (file)
@@ -877,6 +877,8 @@ gtk_widget_set_accessible_role (GtkWidget         *self,
 {
   GtkWidgetPrivate *priv = gtk_widget_get_instance_private (self);
 
+  g_return_if_fail (!gtk_accessible_role_is_abstract (role));
+
   if (priv->at_context == NULL || !gtk_at_context_is_realized (priv->at_context))
     {
       priv->accessible_role = role;
@@ -1923,7 +1925,7 @@ gtk_widget_class_init (GtkWidgetClass *klass)
                               _gtk_marshal_BOOLEAN__INT_INT_BOOLEAN_OBJECTv);
 
   gtk_widget_class_set_css_name (klass, I_("widget"));
-  gtk_widget_class_set_accessible_role (klass, GTK_ACCESSIBLE_ROLE_WIDGET);
+  klass->priv->accessible_role = GTK_ACCESSIBLE_ROLE_WIDGET;
 }
 
 static void
@@ -13165,6 +13167,7 @@ gtk_widget_class_set_accessible_role (GtkWidgetClass    *widget_class,
   GtkWidgetClassPrivate *priv;
 
   g_return_if_fail (GTK_IS_WIDGET_CLASS (widget_class));
+  g_return_if_fail (!gtk_accessible_role_is_abstract (accessible_role));
 
   priv = widget_class->priv;
   priv->accessible_role = accessible_role;