From: Matthias Clasen Date: Sat, 17 Jun 2023 21:12:37 +0000 (-0400) Subject: a11y: Change the role for many containers X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~1^2~126^2~5 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=a86923de943b6a42ba431be2a336972dca9c587d;p=gtk4.git a11y: Change the role for many containers The group role that we've used before has some implications of semantic grouping, whereas these containers are mainly about layout, so use the generic role instead. This should not affect the translation to AT-SPI at all. The affected containers are: box, grid, centerbox, scrolledwindow, viewport, windowhandle, aspectframe. The role of GtkTreeExpander has been changed to button instead, since it acts as a button. --- diff --git a/gtk/gtkaspectframe.c b/gtk/gtkaspectframe.c index 468c123d6f..95a4e69b27 100644 --- a/gtk/gtkaspectframe.c +++ b/gtk/gtkaspectframe.c @@ -38,6 +38,13 @@ * # CSS nodes * * `GtkAspectFrame` uses a CSS node with name `frame`. + * + * # Accessibility + * + * Until GTK 4.10, `GtkAspectFrame` used the `GTK_ACCESSIBLE_ROLE_GROUP` role. + * + * Starting from GTK 4.12, `GtkAspectFrame` uses the `GTK_ACCESSIBLE_ROLE_GENERIC` role. + */ #include "config.h" @@ -187,7 +194,7 @@ gtk_aspect_frame_class_init (GtkAspectFrameClass *class) GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY)); gtk_widget_class_set_css_name (GTK_WIDGET_CLASS (class), I_("aspectframe")); - gtk_widget_class_set_accessible_role (GTK_WIDGET_CLASS (class), GTK_ACCESSIBLE_ROLE_GROUP); + gtk_widget_class_set_accessible_role (GTK_WIDGET_CLASS (class), GTK_ACCESSIBLE_ROLE_GENERIC); } static void diff --git a/gtk/gtkbox.c b/gtk/gtkbox.c index 52630d2800..c8e780a9d7 100644 --- a/gtk/gtkbox.c +++ b/gtk/gtkbox.c @@ -56,7 +56,9 @@ * * # Accessibility * - * `GtkBox` uses the %GTK_ACCESSIBLE_ROLE_GROUP role. + * Until GTK 4.10, `GtkBox` used the `GTK_ACCESSIBLE_ROLE_GROUP` role. + * + * Starting from GTK 4.12, `GtkBox` uses the `GTK_ACCESSIBLE_ROLE_GENERIC` role. */ #include "config.h" @@ -304,8 +306,9 @@ gtk_box_class_init (GtkBoxClass *class) gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BOX_LAYOUT); gtk_widget_class_set_css_name (widget_class, I_("box")); - gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_GROUP); + gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_GENERIC); } + static void gtk_box_init (GtkBox *box) { diff --git a/gtk/gtkcenterbox.c b/gtk/gtkcenterbox.c index e76ffc31dd..1d9ab7caaf 100644 --- a/gtk/gtkcenterbox.c +++ b/gtk/gtkcenterbox.c @@ -52,7 +52,9 @@ * * # Accessibility * - * `GtkCenterBox` uses the %GTK_ACCESSIBLE_ROLE_GROUP role. + * Until GTK 4.10, `GtkCenterBox` used the `GTK_ACCESSIBLE_ROLE_GROUP` role. + * + * Starting from GTK 4.12, `GtkCenterBox` uses the `GTK_ACCESSIBLE_ROLE_GENERIC` role. */ #include "config.h" @@ -321,7 +323,7 @@ gtk_center_box_class_init (GtkCenterBoxClass *klass) gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_CENTER_LAYOUT); gtk_widget_class_set_css_name (widget_class, I_("box")); - gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_GROUP); + gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_GENERIC); } static void diff --git a/gtk/gtkenums.h b/gtk/gtkenums.h index 53fbee0b61..e01629ea13 100644 --- a/gtk/gtkenums.h +++ b/gtk/gtkenums.h @@ -1259,11 +1259,12 @@ typedef enum { * @GTK_ACCESSIBLE_ROLE_DOCUMENT: Unused * @GTK_ACCESSIBLE_ROLE_FEED: Unused * @GTK_ACCESSIBLE_ROLE_FORM: Unused - * @GTK_ACCESSIBLE_ROLE_GENERIC: Unused + * @GTK_ACCESSIBLE_ROLE_GENERIC: A nameless container that has no semantic meaning + * of its own. This is the role that GTK uses by default for widgets and most containers. * @GTK_ACCESSIBLE_ROLE_GRID: A grid of items. * @GTK_ACCESSIBLE_ROLE_GRID_CELL: An item in a grid or tree grid. - * @GTK_ACCESSIBLE_ROLE_GROUP: An element that groups multiple widgets. GTK uses - * this role for various containers, like [class@Box], [class@Viewport], and [class@HeaderBar]. + * @GTK_ACCESSIBLE_ROLE_GROUP: An element that groups multiple related widgets. GTK uses + * this role for various containers, like [class@Gtk.HeaderBar] or [class@Gtk.Notebook]. * @GTK_ACCESSIBLE_ROLE_HEADING: Unused * @GTK_ACCESSIBLE_ROLE_IMG: An image. * @GTK_ACCESSIBLE_ROLE_INPUT: Abstract role. diff --git a/gtk/gtkgrid.c b/gtk/gtkgrid.c index 5b2c1f4d76..087b40c47d 100644 --- a/gtk/gtkgrid.c +++ b/gtk/gtkgrid.c @@ -116,7 +116,9 @@ * * # Accessibility * - * `GtkGrid` uses the %GTK_ACCESSIBLE_ROLE_GROUP role. + * Until GTK 4.10, `GtkGrid` used the `GTK_ACCESSIBLE_ROLE_GROUP` role. + * + * Starting from GTK 4.12, `GtkGrid` uses the `GTK_ACCESSIBLE_ROLE_GENERIC` role. */ typedef struct @@ -477,7 +479,7 @@ gtk_grid_class_init (GtkGridClass *class) gtk_widget_class_set_css_name (widget_class, I_("grid")); gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_GRID_LAYOUT); - gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_GROUP); + gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_GENERIC); } static GtkBuildableIface *parent_buildable_iface; diff --git a/gtk/gtkpopovercontent.c b/gtk/gtkpopovercontent.c index 06ca8d38eb..4fd45e7817 100644 --- a/gtk/gtkpopovercontent.c +++ b/gtk/gtkpopovercontent.c @@ -76,6 +76,7 @@ gtk_popover_content_class_init (GtkPopoverContentClass *klass) widget_class->css_changed = gtk_popover_content_css_changed; gtk_widget_class_set_css_name (widget_class, I_("contents")); + gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_GENERIC); } static void diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c index 5626bd27d5..a2aa3d3a48 100644 --- a/gtk/gtkscrolledwindow.c +++ b/gtk/gtkscrolledwindow.c @@ -124,7 +124,9 @@ * * # Accessibility * - * `GtkScrolledWindow` uses the %GTK_ACCESSIBLE_ROLE_GROUP role. + * Until GTK 4.10, `GtkScrolledWindow` used the `GTK_ACCESSIBLE_ROLE_GROUP` role. + * + * Starting from GTK 4.12, `GtkScrolledWindow` uses the `GTK_ACCESSIBLE_ROLE_GENERIC` role. */ /* scrolled window policy and size requisition handling: @@ -873,7 +875,7 @@ gtk_scrolled_window_class_init (GtkScrolledWindowClass *class) add_tab_bindings (widget_class, GDK_CONTROL_MASK | GDK_SHIFT_MASK, GTK_DIR_TAB_BACKWARD); gtk_widget_class_set_css_name (widget_class, I_("scrolledwindow")); - gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_GROUP); + gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_GENERIC); } static gboolean diff --git a/gtk/gtktreeexpander.c b/gtk/gtktreeexpander.c index 66a520b95c..c8e4813ed8 100644 --- a/gtk/gtktreeexpander.c +++ b/gtk/gtktreeexpander.c @@ -84,9 +84,10 @@ * * ## Accessibility * - * `GtkTreeExpander` uses the %GTK_ACCESSIBLE_ROLE_GROUP role. The expander icon - * is represented as a %GTK_ACCESSIBLE_ROLE_BUTTON, labelled by the expander's - * child, and toggling it will change the %GTK_ACCESSIBLE_STATE_EXPANDED state. + * Until GTK 4.10, `GtkTreeExpander` used the `GTK_ACCESSIBLE_ROLE_GROUP` role. + * + * Since GTK 4.12, `GtkTreeExpander` uses the `GTK_ACCESSIBLE_ROLE_BUTTON` role. + * Toggling it will change the `GTK_ACCESSIBLE_STATE_EXPANDED` state. */ struct _GtkTreeExpander @@ -172,7 +173,7 @@ gtk_tree_expander_update_for_list_row (GtkTreeExpander *self) self->expander_icon = g_object_new (GTK_TYPE_BUILTIN_ICON, "css-name", "expander", - "accessible-role", GTK_ACCESSIBLE_ROLE_BUTTON, + "accessible-role", GTK_ACCESSIBLE_ROLE_NONE, NULL); gesture = gtk_gesture_click_new (); @@ -189,10 +190,6 @@ gtk_tree_expander_update_for_list_row (GtkTreeExpander *self) gtk_widget_insert_before (self->expander_icon, GTK_WIDGET (self), self->child); - - gtk_accessible_update_property (GTK_ACCESSIBLE (self->expander_icon), - GTK_ACCESSIBLE_PROPERTY_LABEL, _("Expand"), - -1); } if (gtk_tree_list_row_get_expanded (self->list_row)) @@ -684,7 +681,7 @@ gtk_tree_expander_class_init (GtkTreeExpanderClass *klass) gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BOX_LAYOUT); gtk_widget_class_set_css_name (widget_class, I_("treeexpander")); - gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_GROUP); + gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_BUTTON); } static gboolean diff --git a/gtk/gtkviewport.c b/gtk/gtkviewport.c index 443fec57ee..5f9cc86fe4 100644 --- a/gtk/gtkviewport.c +++ b/gtk/gtkviewport.c @@ -54,7 +54,9 @@ * * # Accessibility * - * `GtkViewport` uses the %GTK_ACCESSIBLE_ROLE_GROUP role. + * Until GTK 4.10, `GtkViewport` used the `GTK_ACCESSIBLE_ROLE_GROUP` role. + * + * Starting from GTK 4.12, `GtkViewport` uses the `GTK_ACCESSIBLE_ROLE_GENERIC` role. */ typedef struct _GtkViewportPrivate GtkViewportPrivate; @@ -334,7 +336,7 @@ gtk_viewport_class_init (GtkViewportClass *class) GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY)); gtk_widget_class_set_css_name (widget_class, I_("viewport")); - gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_GROUP); + gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_GENERIC); } static void diff --git a/gtk/gtkwindowhandle.c b/gtk/gtkwindowhandle.c index 56594d8714..afb7215b30 100644 --- a/gtk/gtkwindowhandle.c +++ b/gtk/gtkwindowhandle.c @@ -50,7 +50,9 @@ * * # Accessibility * - * `GtkWindowHandle` uses the %GTK_ACCESSIBLE_ROLE_GROUP role. + * Until GTK 4.10, `GtkWindowHandle` used the `GTK_ACCESSIBLE_ROLE_GROUP` role. + * + * Starting from GTK 4.12, `GtkWindowHandle` uses the `GTK_ACCESSIBLE_ROLE_GENERIC` role. */ struct _GtkWindowHandle { @@ -544,7 +546,7 @@ gtk_window_handle_class_init (GtkWindowHandleClass *klass) gtk_widget_class_set_layout_manager_type (widget_class, GTK_TYPE_BIN_LAYOUT); gtk_widget_class_set_css_name (widget_class, I_("windowhandle")); - gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_GROUP); + gtk_widget_class_set_accessible_role (widget_class, GTK_ACCESSIBLE_ROLE_GENERIC); } static void