]> Pileus Git - ~andy/gtk/commitdiff
menubutton: clear arrow_widget on remove()
authorCosimo Cecchi <cosimoc@gnome.org>
Tue, 4 Sep 2012 13:38:28 +0000 (09:38 -0400)
committerCosimo Cecchi <cosimoc@gnome.org>
Tue, 4 Sep 2012 13:38:28 +0000 (09:38 -0400)
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.

gtk/gtkmenubutton.c

index 048ab85eca84ef1a7485022779fa1ac17058c655..b5f7547957d14834e05bd92ebe721183876533b9 100644 (file)
@@ -445,14 +445,23 @@ gtk_menu_button_add (GtkContainer *container,
   GtkMenuButton *button = GTK_MENU_BUTTON (container);
 
   if (button->priv->arrow_widget)
   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);
 }
 
 
   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)
 {
 static void
 gtk_menu_button_class_init (GtkMenuButtonClass *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;
   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;
 
 
   toggle_button_class->toggled = gtk_menu_button_toggled;