[gtk+/native-layout] Fixed GtkAssistant to not access ->requisition of children directly.



commit fe257d23dd6ca64194c7b7d4ac9c05d8faba6aec
Author: Tristan Van Berkom <tristan van berkom gmail com>
Date:   Sun Apr 18 20:11:43 2010 -0400

    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 files changed, 10 insertions(+), 5 deletions(-)
---
diff --git a/gtk/gtkassistant.c b/gtk/gtkassistant.c
index 1e2c3ce..143a833 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;
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]