Make BALMLayout respect its position when nested.
This commit is contained in:
parent
51b5b66b01
commit
f6db102e47
@ -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);
|
||||
|
@ -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());
|
||||
}
|
||||
|
||||
|
||||
|
@ -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));
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user