Make BALMLayout respect its position when nested.

This commit is contained in:
Alex Wilson
2012-05-03 08:44:50 +12:00
parent 51b5b66b01
commit f6db102e47
3 changed files with 7 additions and 6 deletions
+1 -1
View File
@@ -106,7 +106,7 @@ private:
Row* row, Column* column,
RowColumnManager* manager);
void _DoLayout();
void _DoLayout(const BPoint& offset);
void _UpdateMinSizeConstraint(BSize min);
void _UpdateMaxSizeConstraint(BSize max);
+4 -3
View File
@@ -794,14 +794,15 @@ BALMLayout::DoLayout()
// Enforced absolute positions of Right and Bottom
BRect area(LayoutArea());
Right()->SetRange(area.right, area.right);
Bottom()->SetRange(area.bottom, area.bottom);
BSize size(area.Size());
Right()->SetRange(size.width, size.width);
Bottom()->SetRange(size.height, size.height);
_TrySolve();
// set the calculated positions and sizes for every area
for (int32 i = 0; i < CountItems(); i++)
AreaFor(ItemAt(i))->_DoLayout();
AreaFor(ItemAt(i))->_DoLayout(area.LeftTop());
}
+2 -2
View File
@@ -565,7 +565,7 @@ Area::_Init(LinearSpec* ls, Row* row, Column* column, RowColumnManager* manager)
* Perform layout on the area.
*/
void
Area::_DoLayout()
Area::_DoLayout(const BPoint& offset)
{
// check if if we are initialized
if (!fLeft)
@@ -577,7 +577,7 @@ Area::_DoLayout()
areaFrame.top += TopInset();
areaFrame.bottom -= BottomInset();
fLayoutItem->AlignInFrame(areaFrame);
fLayoutItem->AlignInFrame(areaFrame.OffsetBySelf(offset));
}