diff options
author | Cosimo Cecchi <cosimoc@gnome.org> | 2012-09-04 09:38:28 -0400 |
---|---|---|
committer | Cosimo Cecchi <cosimoc@gnome.org> | 2012-09-04 09:38:28 -0400 |
commit | 143a600466643e2c6fe3a00fb3849893de1e3641 (patch) | |
tree | f9b651397225adba7b4b68d4b25a34c200e4e8a7 /gtk/gtkmenubutton.c | |
parent | f2ab3af20afe2f1524099091288c099bf1dd3c2b (diff) | |
download | gtk+-143a600466643e2c6fe3a00fb3849893de1e3641.tar.gz |
menubutton: clear arrow_widget on remove()
So that we clear its pointer also in case somebody else calls
gtk_container_remove() on the button.
Fixes criticals at startup in e.g. Nautilus.
Diffstat (limited to 'gtk/gtkmenubutton.c')
-rw-r--r-- | gtk/gtkmenubutton.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/gtk/gtkmenubutton.c b/gtk/gtkmenubutton.c index 048ab85eca..b5f7547957 100644 --- a/gtk/gtkmenubutton.c +++ b/gtk/gtkmenubutton.c @@ -445,15 +445,24 @@ gtk_menu_button_add (GtkContainer *container, GtkMenuButton *button = GTK_MENU_BUTTON (container); if (button->priv->arrow_widget) - { - gtk_container_remove (container, button->priv->arrow_widget); - button->priv->arrow_widget = NULL; - } + gtk_container_remove (container, button->priv->arrow_widget); GTK_CONTAINER_CLASS (gtk_menu_button_parent_class)->add (container, child); } static void +gtk_menu_button_remove (GtkContainer *container, + GtkWidget *child) +{ + GtkMenuButton *button = GTK_MENU_BUTTON (container); + + if (child == button->priv->arrow_widget) + button->priv->arrow_widget = NULL; + + GTK_CONTAINER_CLASS (gtk_menu_button_parent_class)->remove (container, child); +} + +static void gtk_menu_button_class_init (GtkMenuButtonClass *klass) { GObjectClass *gobject_class = G_OBJECT_CLASS (klass); @@ -471,6 +480,7 @@ gtk_menu_button_class_init (GtkMenuButtonClass *klass) widget_class->button_press_event = gtk_menu_button_button_press_event; container_class->add = gtk_menu_button_add; + container_class->remove = gtk_menu_button_remove; toggle_button_class->toggled = gtk_menu_button_toggled; |