+ gdk_window_move_resize(gtk_widget_get_window(widget), x, y, w, h);
+ }
+}
+
+static void pizza_show(GtkWidget* widget)
+{
+ GtkWidget* parent = gtk_widget_get_parent(widget);
+ if (parent && (WX_PIZZA(widget)->m_windowStyle & wxPizza::BORDER_STYLES))
+ {
+ // invalidate whole allocation so borders will be drawn properly
+ GtkAllocation a;
+ gtk_widget_get_allocation(widget, &a);
+ gtk_widget_queue_draw_area(parent, a.x, a.y, a.width, a.height);
+ }
+
+ parent_class->show(widget);
+}
+
+static void pizza_hide(GtkWidget* widget)
+{
+ GtkWidget* parent = gtk_widget_get_parent(widget);
+ if (parent && (WX_PIZZA(widget)->m_windowStyle & wxPizza::BORDER_STYLES))
+ {
+ // invalidate whole allocation so borders will be erased properly
+ GtkAllocation a;
+ gtk_widget_get_allocation(widget, &a);
+ gtk_widget_queue_draw_area(parent, a.x, a.y, a.width, a.height);
+ }
+
+ parent_class->hide(widget);
+}
+
+static void pizza_add(GtkContainer* container, GtkWidget* widget)
+{
+ WX_PIZZA(container)->put(widget, 0, 0, 1, 1);
+}
+
+static void pizza_remove(GtkContainer* container, GtkWidget* widget)
+{
+ GTK_CONTAINER_CLASS(parent_class)->remove(container, widget);
+
+ wxPizza* pizza = WX_PIZZA(container);
+ for (GList* p = pizza->m_children; p; p = p->next)
+ {
+ wxPizzaChild* child = static_cast<wxPizzaChild*>(p->data);
+ if (child->widget == widget)
+ {
+ pizza->m_children = g_list_delete_link(pizza->m_children, p);
+ delete child;
+ break;
+ }