summaryrefslogtreecommitdiff
path: root/gtk/gtkgrid.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2011-06-07 11:05:50 -0400
committerMatthias Clasen <mclasen@redhat.com>2011-06-07 11:05:50 -0400
commitd4224cd325932674cb55c8541165c40b0c052af6 (patch)
tree89402b6714f556ec4541ff3ccd3a51bfce6dd0dd /gtk/gtkgrid.c
parenteb76287995fecbb4bef991d29066549570a48164 (diff)
downloadgtk+-d4224cd325932674cb55c8541165c40b0c052af6.tar.gz
GtkGrid: Fix a size allocation problem
We need pay attention the the request mode when doing size allocation. The code was using request mode for requisition, but orientation for allocation. Also add a reftest that exhibits the issue, courtesy of Benjamin Otte.
Diffstat (limited to 'gtk/gtkgrid.c')
-rw-r--r--gtk/gtkgrid.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/gtk/gtkgrid.c b/gtk/gtkgrid.c
index e1c56f948f..88fe59de3a 100644
--- a/gtk/gtkgrid.c
+++ b/gtk/gtkgrid.c
@@ -1231,6 +1231,7 @@ gtk_grid_size_allocate (GtkWidget *widget,
GtkGridPrivate *priv = grid->priv;
GtkGridRequest request;
GtkGridLines *lines;
+ GtkOrientation orientation;
if (priv->children == NULL)
{
@@ -1250,10 +1251,15 @@ gtk_grid_size_allocate (GtkWidget *widget,
gtk_widget_set_allocation (widget, allocation);
- gtk_grid_request_run (&request, 1 - priv->orientation, FALSE);
- gtk_grid_request_allocate (&request, 1 - priv->orientation, GET_SIZE (allocation, 1 - priv->orientation));
- gtk_grid_request_run (&request, priv->orientation, TRUE);
- gtk_grid_request_allocate (&request, priv->orientation, GET_SIZE (allocation, priv->orientation));
+ if (gtk_widget_get_request_mode (widget) == GTK_SIZE_REQUEST_WIDTH_FOR_HEIGHT)
+ orientation = GTK_ORIENTATION_HORIZONTAL;
+ else
+ orientation = GTK_ORIENTATION_VERTICAL;
+
+ gtk_grid_request_run (&request, 1 - orientation, FALSE);
+ gtk_grid_request_allocate (&request, 1 - orientation, GET_SIZE (allocation, 1 - orientation));
+ gtk_grid_request_run (&request, orientation, TRUE);
+ gtk_grid_request_allocate (&request, orientation, GET_SIZE (allocation, orientation));
gtk_grid_request_position (&request, 0);
gtk_grid_request_position (&request, 1);