// are statically positioned and thus need to move with their absolute ancestors.
bool canContainFixedPosObjects = canContainFixedPositionObjects();
if (posChildNeedsLayout() || canContainFixedPosObjects)
- layoutPositionedObjects(false, !posChildNeedsLayout() && canContainFixedPosObjects ? LayoutOnlyFixedPositionedObjects : DefaultLayout);
+ layoutPositionedObjects(false, !posChildNeedsLayout() && canContainFixedPosObjects);
// Recompute our overflow information.
// FIXME: We could do better here by computing a temporary overflow object from layoutPositionedObjects and only
return margin;
}
-void RenderBlock::layoutPositionedObjects(bool relayoutChildren, PositionedLayoutBehavior info)
+void RenderBlock::layoutPositionedObjects(bool relayoutChildren, bool fixedPositionObjectsOnly)
{
TrackedRendererListHashSet* positionedDescendants = positionedObjects();
if (!positionedDescendants)
// if this is a fixed position element, mark it for layout if it has an abspos ancestor and needs to move with that ancestor, i.e.
// it has static position.
markFixedPositionObjectForLayoutIfNeeded(r, layoutScope);
- if (info == LayoutOnlyFixedPositionedObjects) {
+ if (fixedPositionObjectsOnly) {
r->layoutIfNeeded();
continue;
}
oldLogicalTop = logicalTopForChild(r);
}
- // FIXME: We should be able to do a r->setNeedsPositionedMovementLayout() here instead of a full layout. Need
- // to investigate why it does not trigger the correct invalidations in that case. crbug.com/350756
- if (info == ForcedLayoutAfterContainingBlockMoved)
- r->setNeedsLayout();
-
r->layoutIfNeeded();
// Lay out again if our estimate was wrong.