menu button: Improve accessibility

Rework the way we assign an accessible name to menu buttons,
to make sure we pick up a label, should the button contain
one, and only override the name with "Menu" as a fallback.
This commit is contained in:
Matthias Clasen 2015-03-13 18:38:18 -04:00
parent 98730f71f9
commit fec8a1ee7f
3 changed files with 20 additions and 5 deletions

View File

@ -18,6 +18,7 @@
#include "config.h" #include "config.h"
#include <gtk/gtk.h> #include <gtk/gtk.h>
#include <glib/gi18n-lib.h>
#include "gtkmenubuttonaccessible.h" #include "gtkmenubuttonaccessible.h"
@ -84,11 +85,29 @@ gtk_menu_button_accessible_ref_child (AtkObject *obj,
return accessible; return accessible;
} }
static const gchar *
gtk_menu_button_accessible_get_name (AtkObject *obj)
{
const gchar *name = NULL;
GtkWidget *widget;
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (obj));
if (widget == NULL)
return NULL;
name = ATK_OBJECT_CLASS (gtk_menu_button_accessible_parent_class)->get_name (obj);
if (name != NULL)
return name;
return _("Menu");
}
static void static void
gtk_menu_button_accessible_class_init (GtkMenuButtonAccessibleClass *klass) gtk_menu_button_accessible_class_init (GtkMenuButtonAccessibleClass *klass)
{ {
AtkObjectClass *class = ATK_OBJECT_CLASS (klass); AtkObjectClass *class = ATK_OBJECT_CLASS (klass);
class->get_name = gtk_menu_button_accessible_get_name;
class->initialize = gtk_menu_button_accessible_initialize; class->initialize = gtk_menu_button_accessible_initialize;
class->get_n_children = gtk_menu_button_accessible_get_n_children; class->get_n_children = gtk_menu_button_accessible_get_n_children;
class->ref_child = gtk_menu_button_accessible_ref_child; class->ref_child = gtk_menu_button_accessible_ref_child;

View File

@ -624,7 +624,6 @@ static void
gtk_menu_button_init (GtkMenuButton *menu_button) gtk_menu_button_init (GtkMenuButton *menu_button)
{ {
GtkMenuButtonPrivate *priv; GtkMenuButtonPrivate *priv;
AtkObject *accessible;
priv = gtk_menu_button_get_instance_private (menu_button); priv = gtk_menu_button_get_instance_private (menu_button);
menu_button->priv = priv; menu_button->priv = priv;
@ -634,10 +633,6 @@ gtk_menu_button_init (GtkMenuButton *menu_button)
add_arrow (menu_button); add_arrow (menu_button);
gtk_widget_set_sensitive (GTK_WIDGET (menu_button), FALSE); gtk_widget_set_sensitive (GTK_WIDGET (menu_button), FALSE);
accessible = gtk_widget_get_accessible (GTK_WIDGET (menu_button));
if (GTK_IS_ACCESSIBLE (accessible))
atk_object_set_name (accessible, _("Menu"));
} }
/** /**

View File

@ -30,6 +30,7 @@ gtk/a11y/gtkcomboboxaccessible.c
gtk/a11y/gtkentryaccessible.c gtk/a11y/gtkentryaccessible.c
gtk/a11y/gtkexpanderaccessible.c gtk/a11y/gtkexpanderaccessible.c
gtk/a11y/gtkimageaccessible.c gtk/a11y/gtkimageaccessible.c
gtk/a11y/gtkmenubuttonaccessible.c
gtk/a11y/gtkmenuitemaccessible.c gtk/a11y/gtkmenuitemaccessible.c
gtk/a11y/gtkrenderercellaccessible.c gtk/a11y/gtkrenderercellaccessible.c
gtk/a11y/gtkscalebuttonaccessible.c gtk/a11y/gtkscalebuttonaccessible.c