From fe257d23dd6ca64194c7b7d4ac9c05d8faba6aec Mon Sep 17 00:00:00 2001 From: Tristan Van Berkom Date: Sun, 18 Apr 2010 20:11:43 -0400 Subject: [PATCH] Fixed GtkAssistant to not access ->requisition of children directly. This was causing a 0 height action-area because a GtkBox does not generally update ->requisition with anything useful (call gtk_widget_get_child_requisition() here instead). --- gtk/gtkassistant.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/gtk/gtkassistant.c b/gtk/gtkassistant.c index 1e2c3ce432..143a8337f4 100644 --- a/gtk/gtkassistant.c +++ b/gtk/gtkassistant.c @@ -1145,13 +1145,14 @@ gtk_assistant_size_request (GtkWidget *widget, 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; + GtkRequisition header_requisition, action_requisition, sidebar_requisition; GtkAllocation child_allocation, header_allocation; gint header_padding, content_padding; gboolean rtl; @@ -1178,24 +1179,28 @@ gtk_assistant_size_allocate (GtkWidget *widget, gtk_widget_size_allocate (priv->header_image, &header_allocation); /* Action area */ + gtk_widget_get_child_requisition (priv->action_area, &action_requisition); + child_allocation.x = GTK_CONTAINER (widget)->border_width; child_allocation.y = allocation->height - - GTK_CONTAINER (widget)->border_width - priv->action_area->requisition.height; + GTK_CONTAINER (widget)->border_width - action_requisition.height; child_allocation.width = allocation->width - 2 * GTK_CONTAINER (widget)->border_width; - child_allocation.height = priv->action_area->requisition.height; + child_allocation.height = action_requisition.height; gtk_widget_size_allocate (priv->action_area, &child_allocation); /* Sidebar */ + gtk_widget_get_child_requisition (priv->sidebar_image, &sidebar_requisition); + if (rtl) child_allocation.x = allocation->width - - GTK_CONTAINER (widget)->border_width - priv->sidebar_image->requisition.width; + GTK_CONTAINER (widget)->border_width - sidebar_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.width = sidebar_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;