box-layout: Fix child offsets

Currently, BoxLayout interprets the box passed into allocate() in
a fairly peculiar way:
 - in the direction of the box, all space between [xy]1 and [xy]2
   is distributed among children (e.g. children occupy the entire
   width/height of the box, offset by [xy]1)
 - in the opposite direction, expanded children receive space
   between [xy]1 and the height/width of the box (e.g. children
   occupy the width/height of the box minus [xy]1, offset by [xy]1)
The second behavior doesn't make much sense, so adjust it to interpret
the box parameter in the same way as the first one.

https://bugzilla.gnome.org/show_bug.cgi?id=703809
This commit is contained in:
Florian Müllner 2013-07-06 01:27:38 +02:00 committed by Emmanuele Bassi
parent 5bab9a8655
commit 5dd2dcf14f

View File

@ -1100,7 +1100,7 @@ clutter_box_layout_allocate (ClutterLayoutManager *layout,
if (priv->orientation == CLUTTER_ORIENTATION_VERTICAL) if (priv->orientation == CLUTTER_ORIENTATION_VERTICAL)
{ {
child_allocation.x1 = box->x1; child_allocation.x1 = box->x1;
child_allocation.x2 = MAX (1.0, box->x2 - box->x1); child_allocation.x2 = MAX (1.0, box->x2);
if (priv->is_pack_start) if (priv->is_pack_start)
y = box->y2 - box->y1; y = box->y2 - box->y1;
else else
@ -1109,7 +1109,7 @@ clutter_box_layout_allocate (ClutterLayoutManager *layout,
else else
{ {
child_allocation.y1 = box->y1; child_allocation.y1 = box->y1;
child_allocation.y2 = MAX (1.0, box->y2 - box->y1); child_allocation.y2 = MAX (1.0, box->y2);
if (priv->is_pack_start) if (priv->is_pack_start)
x = box->x2 - box->x1; x = box->x2 - box->x1;
else else