diff options
author | Matthias Clasen <mclasen@redhat.com> | 2011-06-07 11:05:50 -0400 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2011-06-07 11:05:50 -0400 |
commit | d4224cd325932674cb55c8541165c40b0c052af6 (patch) | |
tree | 89402b6714f556ec4541ff3ccd3a51bfce6dd0dd /gtk/gtkgrid.c | |
parent | eb76287995fecbb4bef991d29066549570a48164 (diff) | |
download | gtk+-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.c | 14 |
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); |