return FALSE;
}
+/* < private >
+ * gtk_accessible_role_is_abstract:
+ * @role: a `GtkAccessibleRole`
+ *
+ * Checks if @role is considered abstract and should not be used
+ * for concrete widgets.
+ *
+ * Returns: whether the role is abstract
+ */
+gboolean
+gtk_accessible_role_is_abstract (GtkAccessibleRole role)
+{
+ switch ((int) role)
+ {
+ case GTK_ACCESSIBLE_ROLE_COMMAND:
+ case GTK_ACCESSIBLE_ROLE_COMPOSITE:
+ case GTK_ACCESSIBLE_ROLE_INPUT:
+ case GTK_ACCESSIBLE_ROLE_LANDMARK:
+ case GTK_ACCESSIBLE_ROLE_RANGE:
+ case GTK_ACCESSIBLE_ROLE_SECTION:
+ case GTK_ACCESSIBLE_ROLE_SECTION_HEAD:
+ case GTK_ACCESSIBLE_ROLE_SELECT:
+ case GTK_ACCESSIBLE_ROLE_STRUCTURE:
+#if 0
+ /* FIXME: ARIA considers these abstract.
+ * But we are using them for widgets
+ */
+ case GTK_ACCESSIBLE_ROLE_WIDGET:
+ case GTK_ACCESSIBLE_ROLE_WINDOW:
+#endif
+ return TRUE;
+ default:
+ return FALSE;
+ }
+}
+
/*< private >
* gtk_accessible_platform_changed:
* @self: a `GtkAccessible`
const char * gtk_accessible_role_to_name (GtkAccessibleRole role,
const char *domain);
-gboolean gtk_accessible_role_is_range_subclass (GtkAccessibleRole role);
+gboolean gtk_accessible_role_is_range_subclass (GtkAccessibleRole role);
+
+gboolean gtk_accessible_role_is_abstract (GtkAccessibleRole role);
/* < private >
* GtkAccessibleNaming:
G_DEFINE_TYPE (GtkA11yOverlay, gtk_a11y_overlay, GTK_TYPE_INSPECTOR_OVERLAY)
-static GtkAccessibleRole abstract_roles[] = {
- GTK_ACCESSIBLE_ROLE_COMMAND,
- GTK_ACCESSIBLE_ROLE_COMPOSITE,
- GTK_ACCESSIBLE_ROLE_INPUT,
- GTK_ACCESSIBLE_ROLE_LANDMARK,
- GTK_ACCESSIBLE_ROLE_RANGE,
- GTK_ACCESSIBLE_ROLE_SECTION,
- GTK_ACCESSIBLE_ROLE_SECTION_HEAD,
- GTK_ACCESSIBLE_ROLE_SELECT,
- GTK_ACCESSIBLE_ROLE_STRUCTURE,
-#if 0
- /* FIXME: ARIA considers these abstract.
- * But we are using them for widgets
- */
- GTK_ACCESSIBLE_ROLE_WIDGET,
- GTK_ACCESSIBLE_ROLE_WINDOW
-#endif
-};
-
typedef enum
{
SEVERITY_GOOD,
gtk_at_context_realize (context);
/* Check for abstract roles */
- for (unsigned int i = 0; i < G_N_ELEMENTS (abstract_roles); i++)
+ if (gtk_accessible_role_is_abstract (role))
{
- if (role == abstract_roles[i])
- {
- *hint = g_strdup_printf ("%s is an abstract role", role_name);
-
- return SEVERITY_ERROR;
- }
+ *hint = g_strdup_printf ("%s is an abstract role", role_name);
+ return SEVERITY_ERROR;
}
/* Check for name and description */