+ attributes.x = 0;
+ attributes.y = 0;
+
+ attributes.event_mask = gtk_widget_get_events (widget);
+ attributes.event_mask |=
+ GDK_EXPOSURE_MASK |
+ GDK_POINTER_MOTION_MASK |
+ GDK_POINTER_MOTION_HINT_MASK |
+ GDK_BUTTON_MOTION_MASK |
+ GDK_BUTTON1_MOTION_MASK |
+ GDK_BUTTON2_MOTION_MASK |
+ GDK_BUTTON3_MOTION_MASK |
+ GDK_BUTTON_PRESS_MASK |
+ GDK_BUTTON_RELEASE_MASK |
+ GDK_KEY_PRESS_MASK |
+ GDK_KEY_RELEASE_MASK |
+ GDK_ENTER_NOTIFY_MASK |
+ GDK_LEAVE_NOTIFY_MASK |
+ GDK_FOCUS_CHANGE_MASK;
+
+ pizza->bin_window = gdk_window_new (widget->window,
+ &attributes, attributes_mask);
+ gdk_window_set_user_data (pizza->bin_window, widget);
+
+ widget->style = gtk_style_attach (widget->style, widget->window);
+ gtk_style_set_background (widget->style, widget->window, GTK_STATE_NORMAL);
+ gtk_style_set_background (widget->style, pizza->bin_window, GTK_STATE_NORMAL);
+
+ /* add filters for intercepting visibility and expose events */
+ gdk_window_add_filter (widget->window, gtk_pizza_main_filter, pizza);
+ gdk_window_add_filter (pizza->bin_window, gtk_pizza_filter, pizza);
+
+ /* we NEED gravity or we'll give up */
+ gravity_works = gdk_window_set_static_gravities (pizza->bin_window, TRUE);
+
+ /* cannot be done before realisation */
+ children = pizza->children;
+ while (children)
+ {
+ child = children->data;
+ children = children->next;
+
+ gtk_widget_set_parent_window (child->widget, pizza->bin_window);
+ }