+ gdk_window_set_user_data (pizza->bin_window, NULL);
+ gdk_window_destroy (pizza->bin_window);
+ pizza->bin_window = NULL;
+
+ if (GTK_WIDGET_CLASS (pizza_parent_class)->unrealize)
+ (* GTK_WIDGET_CLASS (pizza_parent_class)->unrealize) (widget);
+}
+
+static void
+gtk_pizza_size_request (GtkWidget *widget,
+ GtkRequisition *requisition)
+{
+ GtkPizza *pizza;
+ GtkPizzaChild *child;
+ GList *children;
+ GtkRequisition child_requisition;
+
+ g_return_if_fail (widget != NULL);
+ g_return_if_fail (GTK_IS_PIZZA (widget));
+ g_return_if_fail (requisition != NULL);
+
+ pizza = GTK_PIZZA (widget);
+
+ children = pizza->children;
+ while (children)
+ {
+ child = children->data;
+ children = children->next;
+
+ if (GTK_WIDGET_VISIBLE (child->widget))
+ {
+ gtk_widget_size_request (child->widget, &child_requisition);
+ }
+ }
+
+ /* request very little, I'm not sure if requesting nothing
+ will always have positive effects on stability... */
+ requisition->width = 2;
+ requisition->height = 2;
+}
+
+static void
+gtk_pizza_size_allocate (GtkWidget *widget,
+ GtkAllocation *allocation)
+{
+ GtkPizza *pizza;
+ gint border;
+ gint x,y,w,h;
+ GtkPizzaChild *child;
+ GList *children;
+
+ g_return_if_fail (widget != NULL);
+ g_return_if_fail (GTK_IS_PIZZA(widget));
+ g_return_if_fail (allocation != NULL);
+
+ pizza = GTK_PIZZA (widget);
+
+ widget->allocation = *allocation;
+
+ if (pizza->shadow_type == GTK_MYSHADOW_NONE)
+ border = 0;
+ else
+ if (pizza->shadow_type == GTK_MYSHADOW_THIN)
+ border = 1;
+ else
+ border = 2;
+
+ x = allocation->x + border;
+ y = allocation->y + border;
+ w = allocation->width - border*2;
+ h = allocation->height - border*2;
+
+ if (GTK_WIDGET_REALIZED (widget))
+ {
+ gdk_window_move_resize( widget->window, x, y, w, h );
+ gdk_window_move_resize( pizza->bin_window, 0, 0, w, h );
+ }
+
+ children = pizza->children;
+ while (children)
+ {
+ child = children->data;
+ children = children->next;
+
+#ifndef __WXGTK20__
+ gtk_pizza_position_child (pizza, child);