- gtk_widget_size_request (page->title, &child_requisition);
- w = child_requisition.width;
- h = child_requisition.height;
-
- if (page->header_image)
- {
- w += gdk_pixbuf_get_width (page->header_image) + HEADER_SPACING;
- h = MAX (h, gdk_pixbuf_get_height (page->header_image));
- }
-
- header_width = MAX (header_width, w);
- header_height = MAX (header_height, h);
-
- list = list->next;
- }
-
- gtk_widget_size_request (priv->sidebar_image, &child_requisition);
- width += child_requisition.width;
- height = MAX (height, child_requisition.height);
-
- gtk_widget_set_size_request (priv->header_image, header_width, header_height);
- gtk_widget_size_request (priv->header_image, &child_requisition);
- width = MAX (width, header_width) + 2 * header_padding;
- height += header_height + 2 * header_padding;
-
- gtk_widget_size_request (priv->action_area, &child_requisition);
- width = MAX (width, child_requisition.width);
- height += child_requisition.height + ACTION_AREA_SPACING;
-
- width += GTK_CONTAINER (widget)->border_width * 2 + content_padding * 2;
- height += GTK_CONTAINER (widget)->border_width * 2 + content_padding * 2;
-
- requisition->width = width;
- requisition->height = height;
-}
-
-static void
-gtk_assistant_size_allocate (GtkWidget *widget,
- GtkAllocation *allocation)
-{
- GtkAssistant *assistant = GTK_ASSISTANT (widget);
- GtkAssistantPrivate *priv = assistant->priv;
- GtkRequisition header_requisition;
- GtkAllocation child_allocation, header_allocation;
- gint header_padding, content_padding;
- gboolean rtl;
- GList *pages;
-
- rtl = (gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL);
- pages = priv->pages;
-
- gtk_widget_style_get (widget,
- "header-padding", &header_padding,
- "content-padding", &content_padding,
- NULL);
-
- widget->allocation = *allocation;
-
- /* Header */
- gtk_widget_get_child_requisition (priv->header_image, &header_requisition);
-
- header_allocation.x = GTK_CONTAINER (widget)->border_width + header_padding;
- header_allocation.y = GTK_CONTAINER (widget)->border_width + header_padding;
- header_allocation.width = allocation->width - 2 * GTK_CONTAINER (widget)->border_width - 2 * header_padding;
- header_allocation.height = header_requisition.height;
-
- gtk_widget_size_allocate (priv->header_image, &header_allocation);
-
- /* Action area */
- child_allocation.x = GTK_CONTAINER (widget)->border_width;
- child_allocation.y = allocation->height -
- GTK_CONTAINER (widget)->border_width - priv->action_area->requisition.height;
- child_allocation.width = allocation->width - 2 * GTK_CONTAINER (widget)->border_width;
- child_allocation.height = priv->action_area->requisition.height;
-
- gtk_widget_size_allocate (priv->action_area, &child_allocation);
-
- /* Sidebar */
- if (rtl)
- child_allocation.x = allocation->width -
- GTK_CONTAINER (widget)->border_width - priv->sidebar_image->requisition.width;
- else
- child_allocation.x = GTK_CONTAINER (widget)->border_width;
-
- child_allocation.y = GTK_CONTAINER (widget)->border_width +
- priv->header_image->allocation.height + 2 * header_padding;
- child_allocation.width = priv->sidebar_image->requisition.width;
- child_allocation.height = allocation->height - 2 * GTK_CONTAINER (widget)->border_width -
- priv->header_image->allocation.height - 2 * header_padding - priv->action_area->allocation.height;
-
- gtk_widget_size_allocate (priv->sidebar_image, &child_allocation);
-
- /* Pages */
- child_allocation.x = GTK_CONTAINER (widget)->border_width + content_padding;
- child_allocation.y = GTK_CONTAINER (widget)->border_width +
- priv->header_image->allocation.height + 2 * header_padding + content_padding;
- child_allocation.width = allocation->width - 2 * GTK_CONTAINER (widget)->border_width - 2 * content_padding;
- child_allocation.height = allocation->height - 2 * GTK_CONTAINER (widget)->border_width -
- priv->header_image->allocation.height - 2 * header_padding - ACTION_AREA_SPACING - priv->action_area->allocation.height - 2 * content_padding;
-
- if (GTK_WIDGET_VISIBLE (priv->sidebar_image))
- {
- if (!rtl)
- child_allocation.x += priv->sidebar_image->allocation.width;
-
- child_allocation.width -= priv->sidebar_image->allocation.width;
- }
-
- while (pages)
- {
- GtkAssistantPage *page = pages->data;
-
- gtk_widget_size_allocate (page->page, &child_allocation);
- gtk_widget_size_allocate (page->title, &header_allocation);
- pages = pages->next;
- }