Bug 1920160: Part 4 - Move CSSAlignmentForAbsPosChild to nsContainerFrame. r=jwatt,firefox-style-system-reviewers,emilio
Absolutely positioned elements can be aligned, so it no longer is grid-specific. Differential Revision: https://phabricator.services.mozilla.com/D226530
This commit is contained in:
@@ -9751,51 +9751,6 @@ void nsGridContainerFrame::RemoveFrame(DestroyContext& aContext,
|
||||
nsContainerFrame::RemoveFrame(aContext, aListID, aOldFrame);
|
||||
}
|
||||
|
||||
StyleAlignFlags nsGridContainerFrame::CSSAlignmentForAbsPosChild(
|
||||
const ReflowInput& aChildRI, LogicalAxis aLogicalAxis) const {
|
||||
MOZ_ASSERT(aChildRI.mFrame->IsAbsolutelyPositioned(),
|
||||
"This method should only be called for abspos children");
|
||||
|
||||
StyleAlignFlags alignment =
|
||||
(aLogicalAxis == LogicalAxis::Inline)
|
||||
? aChildRI.mStylePosition->UsedJustifySelf(Style())._0
|
||||
: aChildRI.mStylePosition->UsedAlignSelf(Style())._0;
|
||||
|
||||
// Extract and strip the flag bits
|
||||
StyleAlignFlags alignmentFlags = alignment & StyleAlignFlags::FLAG_BITS;
|
||||
alignment &= ~StyleAlignFlags::FLAG_BITS;
|
||||
|
||||
if (alignment == StyleAlignFlags::NORMAL) {
|
||||
// "the 'normal' keyword behaves as 'start' on replaced
|
||||
// absolutely-positioned boxes, and behaves as 'stretch' on all other
|
||||
// absolutely-positioned boxes."
|
||||
// https://drafts.csswg.org/css-align/#align-abspos
|
||||
// https://drafts.csswg.org/css-align/#justify-abspos
|
||||
alignment = aChildRI.mFrame->IsReplaced() ? StyleAlignFlags::START
|
||||
: StyleAlignFlags::STRETCH;
|
||||
} else if (alignment == StyleAlignFlags::FLEX_START) {
|
||||
alignment = StyleAlignFlags::START;
|
||||
} else if (alignment == StyleAlignFlags::FLEX_END) {
|
||||
alignment = StyleAlignFlags::END;
|
||||
} else if (alignment == StyleAlignFlags::LEFT ||
|
||||
alignment == StyleAlignFlags::RIGHT) {
|
||||
if (aLogicalAxis == LogicalAxis::Inline) {
|
||||
const bool isLeft = (alignment == StyleAlignFlags::LEFT);
|
||||
WritingMode wm = GetWritingMode();
|
||||
alignment = (isLeft == wm.IsBidiLTR()) ? StyleAlignFlags::START
|
||||
: StyleAlignFlags::END;
|
||||
} else {
|
||||
alignment = StyleAlignFlags::START;
|
||||
}
|
||||
} else if (alignment == StyleAlignFlags::BASELINE) {
|
||||
alignment = StyleAlignFlags::START;
|
||||
} else if (alignment == StyleAlignFlags::LAST_BASELINE) {
|
||||
alignment = StyleAlignFlags::END;
|
||||
}
|
||||
|
||||
return (alignment | alignmentFlags);
|
||||
}
|
||||
|
||||
nscoord nsGridContainerFrame::SynthesizeBaseline(
|
||||
const FindItemInGridOrderResult& aGridOrderItem, LogicalAxis aAxis,
|
||||
BaselineSharingGroup aGroup, const nsSize& aCBPhysicalSize, nscoord aCBSize,
|
||||
|
||||
Reference in New Issue
Block a user