From 2040b7ecdf601893f897d76d2025e77167eefca3 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Tue, 28 Jul 2020 16:53:19 -0400 Subject: [PATCH] a11y: Set an accessible role for GtkLabel Use the label accessible role for GtkLabel. ARIA has some ominous wording about it going way, but while we have it, GtkLabel is the obvious candidate for carrying it. Update the documentation and add a test. --- docs/reference/gtk/section-accessibility.md | 1 + gtk/gtkenums.h | 2 +- gtk/gtklabel.c | 5 +++++ testsuite/a11y/label.c | 13 +++++++++++++ 4 files changed, 20 insertions(+), 1 deletion(-) diff --git a/docs/reference/gtk/section-accessibility.md b/docs/reference/gtk/section-accessibility.md index 78cb8c66fa..702e6b01d6 100644 --- a/docs/reference/gtk/section-accessibility.md +++ b/docs/reference/gtk/section-accessibility.md @@ -52,6 +52,7 @@ Each role name is part of the #GtkAccessibleRole enumeration. | `COMBOBOX` | A control that can be expanded to show a list of possible values to select | #GtkComboBox | | `DIALOG` | A dialog that prompts the user to enter information or require a response | #GtkDialog and subclasses | | `IMG` | An image | #GtkImage, #GtkPicture | +| `LABEL` | A visible name or caption for a user interface component. | #GtkLabel | | `PROGRESS_BAR` | An element that display progress | #GtkProgressBar | | `RADIO` | A checkable input in a group of radio roles | #GtkRadioButton | | `SCROLLBAR` | A graphical object controlling the scolling of content | #GtkScrollbar | diff --git a/gtk/gtkenums.h b/gtk/gtkenums.h index 7947e01e82..ca3a3f883d 100644 --- a/gtk/gtkenums.h +++ b/gtk/gtkenums.h @@ -1183,7 +1183,7 @@ typedef enum { * @GTK_ACCESSIBLE_ROLE_HEADING: Unused * @GTK_ACCESSIBLE_ROLE_IMG: An image. * @GTK_ACCESSIBLE_ROLE_INPUT: Unused - * @GTK_ACCESSIBLE_ROLE_LABEL: Unused + * @GTK_ACCESSIBLE_ROLE_LABEL: A visible name or caption for a user interface component. * @GTK_ACCESSIBLE_ROLE_LANDMARK: Unused * @GTK_ACCESSIBLE_ROLE_LEGEND: Unused * @GTK_ACCESSIBLE_ROLE_LINK: Unused diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c index ae671f0885..453f6023c7 100644 --- a/gtk/gtklabel.c +++ b/gtk/gtklabel.c @@ -114,6 +114,10 @@ * sense with translatable attributes. Use markup embedded in the translatable * content instead. * + * # Accessibility + * + * GtkLabel uses the #GTK_ACCESSIBLE_ROLE_LABEL role. + * * # Mnemonics * * Labels may contain “mnemonics”. Mnemonics are @@ -1073,6 +1077,7 @@ gtk_label_class_init (GtkLabelClass *class) NULL); gtk_widget_class_set_css_name (widget_class, I_("label")); + gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_LABEL); quark_mnemonics_visible_connected = g_quark_from_static_string ("gtk-label-mnemonics-visible-connected"); diff --git a/testsuite/a11y/label.c b/testsuite/a11y/label.c index 29803d990a..1faacaecb5 100644 --- a/testsuite/a11y/label.c +++ b/testsuite/a11y/label.c @@ -1,5 +1,17 @@ #include +static void +label_role (void) +{ + GtkWidget *label = gtk_label_new ("a"); + + g_object_ref_sink (label); + + gtk_test_accessible_assert_role (GTK_ACCESSIBLE (label), GTK_ACCESSIBLE_ROLE_LABEL); + + g_object_unref (label); +} + static void label_relations (void) { @@ -37,6 +49,7 @@ main (int argc, char *argv[]) { gtk_test_init (&argc, &argv, NULL); + g_test_add_func ("/a11y/label/role", label_role); g_test_add_func ("/a11y/label/relations", label_relations); return g_test_run ();