+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;
+ }
+ }
+}
+
+#ifdef __WXGTK3__
+static void pizza_get_preferred_width(GtkWidget* widget, int* minimum, int* natural)
+{
+ *minimum = 0;
+ gtk_widget_get_size_request(widget, natural, NULL);
+ if (*natural < 0)
+ *natural = 0;
+}
+
+static void pizza_get_preferred_height(GtkWidget* widget, int* minimum, int* natural)
+{
+ *minimum = 0;
+ gtk_widget_get_size_request(widget, NULL, natural);
+ if (*natural < 0)
+ *natural = 0;
+}
+
+// Needed to implement GtkScrollable interface, but we don't care about the
+// properties. wxWindowGTK handles the adjustments and scroll policy.
+static void pizza_get_property(GObject*, guint, GValue*, GParamSpec*)
+{
+}
+
+static void pizza_set_property(GObject*, guint, const GValue*, GParamSpec*)
+{
+}
+#else