From 552113131cedf405d2e935bf9e163539a2f30856 Mon Sep 17 00:00:00 2001 From: Benjamin Otte Date: Wed, 6 Jul 2011 18:43:07 +0200 Subject: [PATCH] menuitems: Use submenuitem accessible exclusively Submenus can come and go, so we cannot use an accessible that doesn't allow for that. Also, this fixes a rather large refleak. --- gtk/gtkcheckmenuitem.c | 21 ++------------------- gtk/gtkmenuitem.c | 21 ++------------------- gtk/gtkradiomenuitem.c | 21 ++------------------- 3 files changed, 6 insertions(+), 57 deletions(-) diff --git a/gtk/gtkcheckmenuitem.c b/gtk/gtkcheckmenuitem.c index 27465f5039..66c078fb19 100644 --- a/gtk/gtkcheckmenuitem.c +++ b/gtk/gtkcheckmenuitem.c @@ -103,24 +103,6 @@ G_DEFINE_TYPE_WITH_CODE (GtkCheckMenuItem, gtk_check_menu_item, GTK_TYPE_MENU_IT G_IMPLEMENT_INTERFACE (GTK_TYPE_ACTIVATABLE, gtk_check_menu_item_activatable_interface_init)) -static AtkObject * -gtk_check_menu_item_get_accessible (GtkWidget *widget) -{ - GObject *object; - AtkObject *accessible; - - /* FIXME this is not really right, submenus can come and go */ - if (gtk_menu_item_get_submenu (GTK_MENU_ITEM (widget))) - object = g_object_new (GTK_TYPE_CHECK_SUBMENU_ITEM_ACCESSIBLE, NULL); - else - object = g_object_new (GTK_TYPE_CHECK_MENU_ITEM_ACCESSIBLE, NULL); - - accessible = ATK_OBJECT (object); - atk_object_initialize (accessible, widget); - - return accessible; -} - static void gtk_check_menu_item_class_init (GtkCheckMenuItemClass *klass) { @@ -169,7 +151,8 @@ gtk_check_menu_item_class_init (GtkCheckMenuItemClass *klass) GTK_PARAM_READABLE)); widget_class->draw = gtk_check_menu_item_draw; - widget_class->get_accessible = gtk_check_menu_item_get_accessible; + + gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_CHECK_SUBMENU_ITEM_ACCESSIBLE); menu_item_class->activate = gtk_check_menu_item_activate; menu_item_class->hide_on_activate = FALSE; diff --git a/gtk/gtkmenuitem.c b/gtk/gtkmenuitem.c index 3bb0da8c64..7566baddf5 100644 --- a/gtk/gtkmenuitem.c +++ b/gtk/gtkmenuitem.c @@ -209,24 +209,6 @@ G_DEFINE_TYPE_WITH_CODE (GtkMenuItem, gtk_menu_item, GTK_TYPE_BIN, G_IMPLEMENT_INTERFACE (GTK_TYPE_ACTIVATABLE, gtk_menu_item_activatable_interface_init)) -static AtkObject * -gtk_menu_item_get_accessible (GtkWidget *widget) -{ - GObject *object; - AtkObject *accessible; - - /* FIXME this is not really right, submenus can come and go */ - if (gtk_menu_item_get_submenu (GTK_MENU_ITEM (widget))) - object = g_object_new (GTK_TYPE_SUBMENU_ITEM_ACCESSIBLE, NULL); - else - object = g_object_new (GTK_TYPE_MENU_ITEM_ACCESSIBLE, NULL); - - accessible = ATK_OBJECT (object); - atk_object_initialize (accessible, widget); - - return accessible; -} - static void gtk_menu_item_class_init (GtkMenuItemClass *klass) { @@ -254,7 +236,8 @@ gtk_menu_item_class_init (GtkMenuItemClass *klass) widget_class->get_preferred_width = gtk_menu_item_get_preferred_width; widget_class->get_preferred_height = gtk_menu_item_get_preferred_height; widget_class->get_preferred_height_for_width = gtk_menu_item_get_preferred_height_for_width; - widget_class->get_accessible = gtk_menu_item_get_accessible; + + gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_SUBMENU_ITEM_ACCESSIBLE); container_class->forall = gtk_menu_item_forall; diff --git a/gtk/gtkradiomenuitem.c b/gtk/gtkradiomenuitem.c index a17a0ee2ee..e596976190 100644 --- a/gtk/gtkradiomenuitem.c +++ b/gtk/gtkradiomenuitem.c @@ -394,24 +394,6 @@ gtk_radio_menu_item_get_group (GtkRadioMenuItem *radio_menu_item) return radio_menu_item->priv->group; } -static AtkObject * -gtk_radio_menu_item_get_accessible (GtkWidget *widget) -{ - GObject *object; - AtkObject *accessible; - - /* FIXME this is not really right, submenus can come and go */ - if (gtk_menu_item_get_submenu (GTK_MENU_ITEM (widget))) - object = g_object_new (GTK_TYPE_RADIO_SUBMENU_ITEM_ACCESSIBLE, NULL); - else - object = g_object_new (GTK_TYPE_RADIO_MENU_ITEM_ACCESSIBLE, NULL); - - accessible = ATK_OBJECT (object); - atk_object_initialize (accessible, widget); - - return accessible; -} - static void gtk_radio_menu_item_class_init (GtkRadioMenuItemClass *klass) { @@ -427,7 +409,8 @@ gtk_radio_menu_item_class_init (GtkRadioMenuItemClass *klass) gobject_class->get_property = gtk_radio_menu_item_get_property; widget_class->destroy = gtk_radio_menu_item_destroy; - widget_class->get_accessible = gtk_radio_menu_item_get_accessible; + + gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_RADIO_SUBMENU_ITEM_ACCESSIBLE); menu_item_class->activate = gtk_radio_menu_item_activate;