зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1348857 part 2 - [css-grid] Propagate the ApplyAutoMinSize bit to nsFrame::ComputeSize (idempotent patch). r=dholbert
MozReview-Commit-ID: DBU4hDfCAdE
This commit is contained in:
Родитель
a243aa1c80
Коммит
c02d9817f3
|
@ -93,6 +93,9 @@ ReflowInput::ReflowInput(nsPresContext* aPresContext,
|
||||||
if (aFlags & B_CLAMP_MARGIN_BOX_MIN_SIZE) {
|
if (aFlags & B_CLAMP_MARGIN_BOX_MIN_SIZE) {
|
||||||
mFlags.mBClampMarginBoxMinSize = true;
|
mFlags.mBClampMarginBoxMinSize = true;
|
||||||
}
|
}
|
||||||
|
if (aFlags & I_APPLY_AUTO_MIN_SIZE) {
|
||||||
|
mFlags.mApplyAutoMinSize = true;
|
||||||
|
}
|
||||||
|
|
||||||
if (!(aFlags & CALLER_WILL_INIT)) {
|
if (!(aFlags & CALLER_WILL_INIT)) {
|
||||||
Init(aPresContext);
|
Init(aPresContext);
|
||||||
|
@ -242,6 +245,7 @@ ReflowInput::ReflowInput(
|
||||||
mFlags.mIOffsetsNeedCSSAlign = mFlags.mBOffsetsNeedCSSAlign = false;
|
mFlags.mIOffsetsNeedCSSAlign = mFlags.mBOffsetsNeedCSSAlign = false;
|
||||||
mFlags.mIClampMarginBoxMinSize = !!(aFlags & I_CLAMP_MARGIN_BOX_MIN_SIZE);
|
mFlags.mIClampMarginBoxMinSize = !!(aFlags & I_CLAMP_MARGIN_BOX_MIN_SIZE);
|
||||||
mFlags.mBClampMarginBoxMinSize = !!(aFlags & B_CLAMP_MARGIN_BOX_MIN_SIZE);
|
mFlags.mBClampMarginBoxMinSize = !!(aFlags & B_CLAMP_MARGIN_BOX_MIN_SIZE);
|
||||||
|
mFlags.mApplyAutoMinSize = !!(aFlags & I_APPLY_AUTO_MIN_SIZE);
|
||||||
|
|
||||||
mDiscoveredClearance = nullptr;
|
mDiscoveredClearance = nullptr;
|
||||||
mPercentBSizeObserver = (aParentReflowInput.mPercentBSizeObserver &&
|
mPercentBSizeObserver = (aParentReflowInput.mPercentBSizeObserver &&
|
||||||
|
@ -1666,6 +1670,10 @@ ReflowInput::InitAbsoluteConstraints(nsPresContext* aPresContext,
|
||||||
computeSizeFlags = ComputeSizeFlags(computeSizeFlags |
|
computeSizeFlags = ComputeSizeFlags(computeSizeFlags |
|
||||||
ComputeSizeFlags::eBClampMarginBoxMinSize);
|
ComputeSizeFlags::eBClampMarginBoxMinSize);
|
||||||
}
|
}
|
||||||
|
if (mFlags.mApplyAutoMinSize) {
|
||||||
|
computeSizeFlags = ComputeSizeFlags(computeSizeFlags |
|
||||||
|
ComputeSizeFlags::eIApplyAutoMinSize);
|
||||||
|
}
|
||||||
if (mFlags.mShrinkWrap) {
|
if (mFlags.mShrinkWrap) {
|
||||||
computeSizeFlags =
|
computeSizeFlags =
|
||||||
ComputeSizeFlags(computeSizeFlags | ComputeSizeFlags::eShrinkWrap);
|
ComputeSizeFlags(computeSizeFlags | ComputeSizeFlags::eShrinkWrap);
|
||||||
|
@ -2379,6 +2387,10 @@ ReflowInput::InitConstraints(nsPresContext* aPresContext,
|
||||||
computeSizeFlags = ComputeSizeFlags(computeSizeFlags |
|
computeSizeFlags = ComputeSizeFlags(computeSizeFlags |
|
||||||
ComputeSizeFlags::eBClampMarginBoxMinSize);
|
ComputeSizeFlags::eBClampMarginBoxMinSize);
|
||||||
}
|
}
|
||||||
|
if (mFlags.mApplyAutoMinSize) {
|
||||||
|
computeSizeFlags = ComputeSizeFlags(computeSizeFlags |
|
||||||
|
ComputeSizeFlags::eIApplyAutoMinSize);
|
||||||
|
}
|
||||||
if (mFlags.mShrinkWrap) {
|
if (mFlags.mShrinkWrap) {
|
||||||
computeSizeFlags =
|
computeSizeFlags =
|
||||||
ComputeSizeFlags(computeSizeFlags | ComputeSizeFlags::eShrinkWrap);
|
ComputeSizeFlags(computeSizeFlags | ComputeSizeFlags::eShrinkWrap);
|
||||||
|
|
|
@ -220,6 +220,7 @@ public:
|
||||||
bool mStaticPosIsCBOrigin : 1; // the STATIC_POS_IS_CB_ORIGIN ctor flag
|
bool mStaticPosIsCBOrigin : 1; // the STATIC_POS_IS_CB_ORIGIN ctor flag
|
||||||
bool mIClampMarginBoxMinSize : 1; // the I_CLAMP_MARGIN_BOX_MIN_SIZE ctor flag
|
bool mIClampMarginBoxMinSize : 1; // the I_CLAMP_MARGIN_BOX_MIN_SIZE ctor flag
|
||||||
bool mBClampMarginBoxMinSize : 1; // the B_CLAMP_MARGIN_BOX_MIN_SIZE ctor flag
|
bool mBClampMarginBoxMinSize : 1; // the B_CLAMP_MARGIN_BOX_MIN_SIZE ctor flag
|
||||||
|
bool mApplyAutoMinSize : 1; // the I_APPLY_AUTO_MIN_SIZE ctor flag
|
||||||
|
|
||||||
// If set, the following two flags indicate that:
|
// If set, the following two flags indicate that:
|
||||||
// (1) this frame is absolutely-positioned (or fixed-positioned).
|
// (1) this frame is absolutely-positioned (or fixed-positioned).
|
||||||
|
@ -739,6 +740,9 @@ public:
|
||||||
|
|
||||||
// Pass ComputeSizeFlags::eBClampMarginBoxMinSize to ComputeSize().
|
// Pass ComputeSizeFlags::eBClampMarginBoxMinSize to ComputeSize().
|
||||||
B_CLAMP_MARGIN_BOX_MIN_SIZE = (1<<6),
|
B_CLAMP_MARGIN_BOX_MIN_SIZE = (1<<6),
|
||||||
|
|
||||||
|
// Pass ComputeSizeFlags::eIApplyAutoMinSize to ComputeSize().
|
||||||
|
I_APPLY_AUTO_MIN_SIZE = (1<<7),
|
||||||
};
|
};
|
||||||
|
|
||||||
// This method initializes various data members. It is automatically
|
// This method initializes various data members. It is automatically
|
||||||
|
|
|
@ -5012,6 +5012,9 @@ nsGridContainerFrame::ReflowInFlowChild(nsIFrame* aChild,
|
||||||
} else {
|
} else {
|
||||||
aChild->Properties().Delete(BClampMarginBoxMinSizeProperty());
|
aChild->Properties().Delete(BClampMarginBoxMinSizeProperty());
|
||||||
}
|
}
|
||||||
|
if ((aGridItemInfo->mState[childIAxis] & ItemState::eApplyAutoMinSize)) {
|
||||||
|
flags |= ReflowInput::I_APPLY_AUTO_MIN_SIZE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isConstrainedBSize) {
|
if (!isConstrainedBSize) {
|
||||||
|
|
|
@ -2250,6 +2250,14 @@ public:
|
||||||
*/
|
*/
|
||||||
eIClampMarginBoxMinSize = 1 << 2, // clamp in our inline axis
|
eIClampMarginBoxMinSize = 1 << 2, // clamp in our inline axis
|
||||||
eBClampMarginBoxMinSize = 1 << 3, // clamp in our block axis
|
eBClampMarginBoxMinSize = 1 << 3, // clamp in our block axis
|
||||||
|
/**
|
||||||
|
* The frame is stretching (per CSS Box Alignment) and doesn't have an
|
||||||
|
* Automatic Minimum Size in the indicated axis.
|
||||||
|
* (may be used for both flex/grid items, but currently only used for Grid)
|
||||||
|
* https://drafts.csswg.org/css-grid/#min-size-auto
|
||||||
|
* https://drafts.csswg.org/css-align-3/#valdef-justify-self-stretch
|
||||||
|
*/
|
||||||
|
eIApplyAutoMinSize = 1 << 4, // only has an effect when eShrinkWrap is false
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Загрузка…
Ссылка в новой задаче