static void real_queue_resize (GtkWidget *widget) { GTK_PRIVATE_SET_FLAG (widget, GTK_ALLOC_NEEDED); GTK_PRIVATE_SET_FLAG (widget, GTK_REQUEST_NEEDED); if (widget->parent) _gtk_container_queue_resize (GTK_CONTAINER (widget->parent)); else if (gtk_widget_is_toplevel (widget) && GTK_IS_CONTAINER (widget)) _gtk_container_queue_resize (GTK_CONTAINER (widget)); }
static void gtk_pizza_position_child (GtkPizza *pizza, GtkPizzaChild *child) { gint x; gint y; x = child->x - pizza->xoffset; y = child->y - pizza->yoffset; if (IS_ONSCREEN (x,y)) { if (GTK_WIDGET_MAPPED (pizza) && GTK_WIDGET_VISIBLE (child->widget)) { if (!GTK_WIDGET_MAPPED (child->widget)) gtk_widget_map (child->widget); } if (GTK_WIDGET_IS_OFFSCREEN (child->widget)) GTK_PRIVATE_UNSET_FLAG (child->widget, GTK_IS_OFFSCREEN); } else { if (!GTK_WIDGET_IS_OFFSCREEN (child->widget)) GTK_PRIVATE_SET_FLAG (child->widget, GTK_IS_OFFSCREEN); if (GTK_WIDGET_MAPPED (child->widget)) gtk_widget_unmap (child->widget); } }
void gtk_pizza_put (GtkPizza *pizza, GtkWidget *widget, gint x, gint y, gint width, gint height) { GtkPizzaChild *child_info; g_return_if_fail (pizza != NULL); g_return_if_fail (GTK_IS_PIZZA (pizza)); g_return_if_fail (widget != NULL); child_info = g_new (GtkPizzaChild, 1); child_info->widget = widget; child_info->x = x; child_info->y = y; child_info->width = width; child_info->height = height; pizza->children = g_list_append (pizza->children, child_info); if (GTK_WIDGET_REALIZED (pizza)) gtk_widget_set_parent_window (widget, pizza->bin_window); gtk_widget_set_parent (widget, GTK_WIDGET (pizza)); if (!IS_ONSCREEN (x, y)) GTK_PRIVATE_SET_FLAG (widget, GTK_IS_OFFSCREEN); gtk_widget_set_usize (widget, width, height); }