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); } }
static void do_size_request (GtkWidget *widget) { if (GTK_WIDGET_REQUEST_NEEDED (widget)) { gtk_widget_ensure_style (widget); GTK_PRIVATE_UNSET_FLAG (widget, GTK_REQUEST_NEEDED); g_signal_emit_by_name (widget, "size-request", &widget->requisition); } }
static void gtk_pizza_remove (GtkContainer *container, GtkWidget *widget) { GtkPizza *pizza; GtkPizzaChild *child; GList *children; g_return_if_fail (container != NULL); g_return_if_fail (GTK_IS_PIZZA (container)); g_return_if_fail (widget != NULL); pizza = GTK_PIZZA (container); children = pizza->children; while (children) { child = children->data; if (child->widget == widget) { gtk_widget_unparent (widget); /* security checks */ g_return_if_fail (GTK_IS_WIDGET (widget)); pizza->children = g_list_remove_link (pizza->children, children); g_list_free (children); g_free (child); /* security checks */ g_return_if_fail (GTK_IS_WIDGET (widget)); GTK_PRIVATE_UNSET_FLAG (widget, GTK_IS_OFFSCREEN); break; } children = children->next; } }