From 17fe62d6ba9a44a86a250695e6e60380e2bab9c1 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 1 Mar 2012 12:22:01 -0600 Subject: Setting the default role to be a menu item --- libdbusmenu-gtk/genericmenuitem.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'libdbusmenu-gtk') diff --git a/libdbusmenu-gtk/genericmenuitem.c b/libdbusmenu-gtk/genericmenuitem.c index 435c808..5d13081 100644 --- a/libdbusmenu-gtk/genericmenuitem.c +++ b/libdbusmenu-gtk/genericmenuitem.c @@ -83,6 +83,10 @@ genericmenuitem_class_init (GenericmenuitemClass *klass) object_class->dispose = genericmenuitem_dispose; object_class->finalize = genericmenuitem_finalize; + GtkWidgetClass * widget_class = GTK_WIDGET_CLASS(klass); + + gtk_widget_class_set_accessible_role(widget_class, ATK_ROLE_MENU_ITEM); + GtkCheckMenuItemClass * check_class = GTK_CHECK_MENU_ITEM_CLASS (klass); parent_draw_indicator = check_class->draw_indicator; -- cgit v1.2.3 From cbd4cda4b581a98fbe305fd82018ee78d643edc8 Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 1 Mar 2012 12:31:49 -0600 Subject: Set the role of the menu item based on how it's being displayed --- libdbusmenu-gtk/genericmenuitem.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'libdbusmenu-gtk') diff --git a/libdbusmenu-gtk/genericmenuitem.c b/libdbusmenu-gtk/genericmenuitem.c index 5d13081..4c57319 100644 --- a/libdbusmenu-gtk/genericmenuitem.c +++ b/libdbusmenu-gtk/genericmenuitem.c @@ -351,18 +351,29 @@ genericmenuitem_set_check_type (Genericmenuitem * item, GenericmenuitemCheckType } item->priv->check_type = check_type; + AtkObject * aobj = gtk_widget_get_accessible(GTK_WIDGET(item)); switch (item->priv->check_type) { case GENERICMENUITEM_CHECK_TYPE_NONE: /* We don't need to do anything here as we're queuing the draw and then when it draws it'll avoid drawing the check on the item. */ + + if (aobj != NULL) { + atk_object_set_role(aobj, ATK_ROLE_MENU_ITEM); + } break; case GENERICMENUITEM_CHECK_TYPE_CHECKBOX: gtk_check_menu_item_set_draw_as_radio(GTK_CHECK_MENU_ITEM(item), FALSE); + if (aobj != NULL) { + atk_object_set_role(aobj, ATK_ROLE_CHECK_MENU_ITEM); + } break; case GENERICMENUITEM_CHECK_TYPE_RADIO: gtk_check_menu_item_set_draw_as_radio(GTK_CHECK_MENU_ITEM(item), TRUE); + if (aobj != NULL) { + atk_object_set_role(aobj, ATK_ROLE_RADIO_MENU_ITEM); + } break; default: g_warning("Generic Menuitem invalid check type: %d", check_type); -- cgit v1.2.3 From e0a68da43067e5955f38e62cb5fb1975119082fc Mon Sep 17 00:00:00 2001 From: Ted Gould Date: Thu, 1 Mar 2012 16:25:25 -0600 Subject: Fixing for GTK2 --- libdbusmenu-gtk/genericmenuitem.c | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'libdbusmenu-gtk') diff --git a/libdbusmenu-gtk/genericmenuitem.c b/libdbusmenu-gtk/genericmenuitem.c index 4c57319..e9c8367 100644 --- a/libdbusmenu-gtk/genericmenuitem.c +++ b/libdbusmenu-gtk/genericmenuitem.c @@ -83,9 +83,11 @@ genericmenuitem_class_init (GenericmenuitemClass *klass) object_class->dispose = genericmenuitem_dispose; object_class->finalize = genericmenuitem_finalize; +#ifdef HAVE_GTK3 GtkWidgetClass * widget_class = GTK_WIDGET_CLASS(klass); gtk_widget_class_set_accessible_role(widget_class, ATK_ROLE_MENU_ITEM); +#endif GtkCheckMenuItemClass * check_class = GTK_CHECK_MENU_ITEM_CLASS (klass); @@ -113,6 +115,13 @@ genericmenuitem_init (Genericmenuitem *self) self->priv->disposition = GENERICMENUITEM_DISPOSITION_NORMAL; self->priv->label_text = NULL; +#ifndef HAVE_GTK3 + AtkObject * aobj = gtk_widget_get_accessible(GTK_WIDGET(self)); + if (aobj != NULL) { + atk_object_set_role(aobj, ATK_ROLE_MENU_ITEM); + } +#endif + return; } -- cgit v1.2.3