window: Use application as accessible role
authorMatthias Clasen <mclasen@redhat.com>
Fri, 16 Jun 2023 23:03:49 +0000 (19:03 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Mon, 19 Jun 2023 22:38:58 +0000 (18:38 -0400)
ARIA deems the window role to be abstract,
so lets use the application role instead.

Update affected tests.

docs/reference/gtk/section-accessibility.md
gtk/a11y/gtkatspicontext.c
gtk/gtkwindow.c
testsuite/a11y/window.c

index 51839fcda0745f9782684005a1388a8345eabd88..51ff858c2faa4e125a121969d7754b4703bccabe 100644 (file)
@@ -46,6 +46,7 @@ Each role name is part of the #GtkAccessibleRole enumeration.
 
 | Role name | Description | Related GTK widget |
 |-----------|-------------|--------------------|
+| `APPLICATION` | An application window | [class@Gtk.Window] |
 | `BUTTON` | A control that performs an action when pressed | [class@Gtk.Button], [class@Gtk.LinkButton], [class@Gtk.Expander] |
 | `CHECKBOX` | A control that has three possible value: `true`, `false`, or `undefined` | [class@Gtk.CheckButton] |
 | `COMBOBOX` | A control that can be expanded to show a list of possible values to select | [class@Gtk.ComboBox] |
@@ -78,7 +79,6 @@ Each role name is part of the #GtkAccessibleRole enumeration.
 | `TAB_PANEL` | A page in a notebook or stack | [class@Gtk.Stack] |
 | `TEXT_BOX` | A type of input that allows free-form text as its value. | [class@Gtk.Entry], [class@Gtk.PasswordEntry], [class@Gtk.TextView] |
 | `TREE_GRID` | A treeview-like columned list | [class@Gtk.ColumnView] |
-| `WINDOW` | An application window | [class@Gtk.Window] |
 | `...` | … |
 
 See the [WAI-ARIA](https://www.w3.org/WAI/PF/aria/appendices#quickref) list
index d5e974a6ee0e5adf1d6066e9cb3da59c8dc99af7..2594c8eca61e44b66950d318dacb66500c253a48 100644 (file)
@@ -144,7 +144,7 @@ collect_states (GtkAtSpiContext    *self,
   set_atspi_state (&states, ATSPI_STATE_VISIBLE);
   set_atspi_state (&states, ATSPI_STATE_SHOWING);
 
-  if (ctx->accessible_role == GTK_ACCESSIBLE_ROLE_WINDOW)
+  if (ctx->accessible_role == GTK_ACCESSIBLE_ROLE_APPLICATION)
     {
       if (gtk_accessible_get_platform_state (accessible, GTK_ACCESSIBLE_PLATFORM_STATE_ACTIVE))
         set_atspi_state (&states, ATSPI_STATE_ACTIVE);
@@ -1170,7 +1170,7 @@ gtk_at_spi_context_platform_change (GtkATContext                *ctx,
       /* Orca tracks the window:activate and window:deactivate events on top
        * levels to decide whether to track other AT-SPI events
        */
-      if (gtk_accessible_get_accessible_role (accessible) == GTK_ACCESSIBLE_ROLE_WINDOW)
+      if (gtk_accessible_get_accessible_role (accessible) == GTK_ACCESSIBLE_ROLE_APPLICATION)
         {
           if (state)
             emit_window_event (self, "activate");
index a4084a044259c610495b5c37a951d731a9690c10..a0607988f6f36cae230f3e81356781784c878d8c 100644 (file)
  *
  * # Accessibility
  *
- * `GtkWindow` uses the %GTK_ACCESSIBLE_ROLE_WINDOW role.
+ * Until GTK 4.10, `GtkWindow` used the `GTK_ACCESSIBLE_ROLE_WINDOW` role.
+ *
+ * Since GTK 4.12, `GtkWindow` uses the `GTK_ACCESSIBLE_ROLE_APPLICATION` role.
  *
  * # Actions
  *
@@ -1222,7 +1224,7 @@ gtk_window_class_init (GtkWindowClass *klass)
 
   gtk_widget_class_set_css_name (widget_class, I_("window"));
 
-  gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_WINDOW);
+  gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_APPLICATION);
 }
 
 /**
index 50e9b78b25b2457d2dc057c0d03c22b193d67e4d..8894f36060fc834f96b4a7a14162fbc0cbe8050f 100644 (file)
@@ -5,7 +5,7 @@ window_role (void)
 {
   GtkWidget *window = gtk_window_new ();
 
-  gtk_test_accessible_assert_role (window, GTK_ACCESSIBLE_ROLE_WINDOW);
+  gtk_test_accessible_assert_role (window, GTK_ACCESSIBLE_ROLE_APPLICATION);
 
   gtk_window_destroy (GTK_WINDOW (window));
 }