-gtk_myfixed_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation)
-{
- GtkMyFixed *myfixed;
- gint border;
- GtkMyFixedChild *child;
- GtkAllocation child_allocation;
- GList *children;
-
- g_return_if_fail (widget != NULL);
- g_return_if_fail (GTK_IS_MYFIXED(widget));
- g_return_if_fail (allocation != NULL);
-
- myfixed = GTK_MYFIXED (widget);
-
- if (myfixed->shadow_type == GTK_SHADOW_NONE)
- border = 0;
- else
- border = 2;
-
- widget->allocation = *allocation;
- if (GTK_WIDGET_REALIZED (widget))
- {
- gdk_window_move_resize( widget->window,
- allocation->x+border, allocation->y+border,
-#if (GTK_MINOR_VERSION > 0)
- allocation->width-border*2, allocation->height-border*2 );
+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;
+
+ gtk_pizza_position_child (pizza, child);
+ gtk_pizza_allocate_child (pizza, child);
+ }
+}
+
+#ifndef __WXGTK20__
+
+static void
+gtk_pizza_draw (GtkWidget *widget,
+ GdkRectangle *area)
+{
+ GtkPizza *pizza;
+ GtkPizzaChild *child;
+ GdkRectangle child_area;
+ GList *children;
+
+ g_return_if_fail (widget != NULL);
+ g_return_if_fail (GTK_IS_PIZZA (widget));
+
+ pizza = GTK_PIZZA (widget);
+
+ /* Sometimes, We handle all expose events in window.cpp now. */
+ if (pizza->external_expose)
+ return;
+
+ children = pizza->children;
+ if ( !(GTK_WIDGET_APP_PAINTABLE (widget)) &&
+ (pizza->clear_on_draw))
+ {
+ gdk_window_clear_area( pizza->bin_window,
+ area->x, area->y, area->width, area->height);
+ }
+
+ while (children)
+ {
+ child = children->data;
+ children = children->next;
+
+ if (gtk_widget_intersect (child->widget, area, &child_area))
+ gtk_widget_draw (child->widget, &child_area);
+ }
+}
+
+#endif /* __WXGTK20__ */
+
+static gint
+gtk_pizza_expose (GtkWidget *widget,
+ GdkEventExpose *event)
+{
+ GtkPizza *pizza;
+ GtkPizzaChild *child;
+ GdkEventExpose child_event;
+ GList *children;
+
+ g_return_val_if_fail (widget != NULL, FALSE);
+ g_return_val_if_fail (GTK_IS_PIZZA (widget), FALSE);
+ g_return_val_if_fail (event != NULL, FALSE);
+
+ pizza = GTK_PIZZA (widget);
+
+ if (event->window != pizza->bin_window)
+ return FALSE;
+
+ /* We handle all expose events in window.cpp now. */
+ if (pizza->external_expose)
+ return FALSE;
+
+#ifdef __WXGTK20__
+
+ (* GTK_WIDGET_CLASS (pizza_parent_class)->expose_event) (widget, event);
+
+ return FALSE;
+