+#define IS_ONSCREEN(x,y) ((x >= G_MINSHORT) && (x <= G_MAXSHORT) && \
+ (y >= G_MINSHORT) && (y <= G_MAXSHORT))
+
+typedef struct _GtkPizzaAdjData GtkPizzaAdjData;
+typedef struct _GtkPizzaChild GtkPizzaChild;
+
+struct _GtkPizzaAdjData
+{
+ gint dx;
+ gint dy;
+};
+
+struct _GtkPizzaChild
+{
+ GtkWidget *widget;
+ gint x;
+ gint y;
+ gint width;
+ gint height;
+};
+
+static void gtk_pizza_class_init (GtkPizzaClass *klass);
+static void gtk_pizza_init (GtkPizza *pizza);
+
+static void gtk_pizza_realize (GtkWidget *widget);
+static void gtk_pizza_unrealize (GtkWidget *widget);
+
+static void gtk_pizza_map (GtkWidget *widget);
+
+static void gtk_pizza_size_request (GtkWidget *widget,
+ GtkRequisition *requisition);
+static void gtk_pizza_size_allocate (GtkWidget *widget,
+ GtkAllocation *allocation);
+static void gtk_pizza_draw (GtkWidget *widget,
+ GdkRectangle *area);
+static gint gtk_pizza_expose (GtkWidget *widget,
+ GdkEventExpose *event);
+static void gtk_pizza_add (GtkContainer *container,
+ GtkWidget *widget);
+static void gtk_pizza_remove (GtkContainer *container,
+ GtkWidget *widget);
+static void gtk_pizza_forall (GtkContainer *container,
+ gboolean include_internals,
+ GtkCallback callback,
+ gpointer callback_data);
+
+static void gtk_pizza_position_child (GtkPizza *pizza,
+ GtkPizzaChild *child);
+static void gtk_pizza_allocate_child (GtkPizza *pizza,
+ GtkPizzaChild *child);
+static void gtk_pizza_position_children (GtkPizza *pizza);
+
+static void gtk_pizza_adjust_allocations_recurse (GtkWidget *widget,
+ gpointer cb_data);
+static void gtk_pizza_adjust_allocations (GtkPizza *pizza,
+ gint dx,
+ gint dy);
+
+
+static void gtk_pizza_expose_area (GtkPizza *pizza,
+ gint x,
+ gint y,
+ gint width,
+ gint height);
+static void gtk_pizza_adjustment_changed (GtkAdjustment *adjustment,
+ GtkPizza *pizza);
+static GdkFilterReturn gtk_pizza_filter (GdkXEvent *gdk_xevent,
+ GdkEvent *event,
+ gpointer data);
+static GdkFilterReturn gtk_pizza_main_filter (GdkXEvent *gdk_xevent,
+ GdkEvent *event,
+ gpointer data);
+
+
+static GtkType gtk_pizza_child_type (GtkContainer *container);
+
+static void gtk_pizza_scroll_set_adjustments (GtkPizza *pizza,
+ GtkAdjustment *hadj,
+ GtkAdjustment *vadj);