mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 1223653 patch 2 - Use an enum class for NS_STYLE_BOX_SIZING_*. r=heycam
The casts in nsCSSProps.cpp (defining kBoxSizingKTable) and in nsComputedDOMStyle::DoGetBoxSizing (using nsCSSProps::ValueToKeywordEnum) are a little bit annoying, though aren't a net reduction in typesafety. The casts in nsRuleNode.cpp (SetDiscrete) are a little more annoying, though the change in this patch should be sufficient for converting all properties -- but that may also mean reducing typesafety a bit for all properties. I'd like to find something better to do about them, but I think I'm ok landing this before doing that. Bug 1224918 covers doing better.
This commit is contained in:
parent
6b993322ec
commit
e0e4e4526e
@ -404,7 +404,7 @@ nsGenericHTMLElement::GetOffsetRect(CSSIntRect& aRect)
|
||||
|
||||
// Subtract the parent border unless it uses border-box sizing.
|
||||
if (parent &&
|
||||
parent->StylePosition()->mBoxSizing != NS_STYLE_BOX_SIZING_BORDER) {
|
||||
parent->StylePosition()->mBoxSizing != StyleBoxSizing::Border) {
|
||||
const nsStyleBorder* border = parent->StyleBorder();
|
||||
origin.x -= border->GetComputedBorderWidth(NS_SIDE_LEFT);
|
||||
origin.y -= border->GetComputedBorderWidth(NS_SIDE_TOP);
|
||||
|
@ -4507,7 +4507,7 @@ AddIntrinsicSizeOffset(nsRenderingContext* aRenderingContext,
|
||||
nsIFrame* aFrame,
|
||||
const nsIFrame::IntrinsicISizeOffsetData& aOffsets,
|
||||
nsLayoutUtils::IntrinsicISizeType aType,
|
||||
uint8_t aBoxSizing,
|
||||
StyleBoxSizing aBoxSizing,
|
||||
nscoord aContentSize,
|
||||
nscoord aContentMinSize,
|
||||
const nsStyleCoord& aStyleSize,
|
||||
@ -4528,7 +4528,7 @@ AddIntrinsicSizeOffset(nsRenderingContext* aRenderingContext,
|
||||
coordOutsideSize += aOffsets.hPadding;
|
||||
pctOutsideSize += aOffsets.hPctPadding;
|
||||
|
||||
if (aBoxSizing == NS_STYLE_BOX_SIZING_PADDING) {
|
||||
if (aBoxSizing == StyleBoxSizing::Padding) {
|
||||
min += coordOutsideSize;
|
||||
result = NSCoordSaturatingAdd(result, coordOutsideSize);
|
||||
pctTotal += pctOutsideSize;
|
||||
@ -4540,7 +4540,7 @@ AddIntrinsicSizeOffset(nsRenderingContext* aRenderingContext,
|
||||
|
||||
coordOutsideSize += aOffsets.hBorder;
|
||||
|
||||
if (aBoxSizing == NS_STYLE_BOX_SIZING_BORDER) {
|
||||
if (aBoxSizing == StyleBoxSizing::Border) {
|
||||
min += coordOutsideSize;
|
||||
result = NSCoordSaturatingAdd(result, coordOutsideSize);
|
||||
pctTotal += pctOutsideSize;
|
||||
@ -4668,7 +4668,7 @@ nsLayoutUtils::IntrinsicForAxis(PhysicalAxis aAxis,
|
||||
// so we work in the parent's writing mode; but if aFrame is orthogonal to
|
||||
// its parent, we'll need to look at its BSize instead of min/pref-ISize.
|
||||
const nsStylePosition* stylePos = aFrame->StylePosition();
|
||||
uint8_t boxSizing = stylePos->mBoxSizing;
|
||||
StyleBoxSizing boxSizing = stylePos->mBoxSizing;
|
||||
|
||||
const nsStyleCoord& styleMinISize =
|
||||
horizontalAxis ? stylePos->mMinWidth : stylePos->mMinHeight;
|
||||
@ -4725,7 +4725,7 @@ nsLayoutUtils::IntrinsicForAxis(PhysicalAxis aAxis,
|
||||
// widths just like auto.
|
||||
// For -moz-max-content and -moz-min-content, we handle them like
|
||||
// specified widths, but ignore box-sizing.
|
||||
boxSizing = NS_STYLE_BOX_SIZING_CONTENT;
|
||||
boxSizing = StyleBoxSizing::Content;
|
||||
} else if (!styleISize.ConvertsToLength() &&
|
||||
!(haveFixedMinISize && haveFixedMaxISize && maxISize <= minISize)) {
|
||||
#ifdef DEBUG_INTRINSIC_WIDTH
|
||||
@ -4787,14 +4787,14 @@ nsLayoutUtils::IntrinsicForAxis(PhysicalAxis aAxis,
|
||||
|
||||
nscoord bSizeTakenByBoxSizing = 0;
|
||||
switch (boxSizing) {
|
||||
case NS_STYLE_BOX_SIZING_BORDER: {
|
||||
case StyleBoxSizing::Border: {
|
||||
const nsStyleBorder* styleBorder = aFrame->StyleBorder();
|
||||
bSizeTakenByBoxSizing +=
|
||||
horizontalAxis ? styleBorder->GetComputedBorder().TopBottom()
|
||||
: styleBorder->GetComputedBorder().LeftRight();
|
||||
// fall through
|
||||
}
|
||||
case NS_STYLE_BOX_SIZING_PADDING: {
|
||||
case StyleBoxSizing::Padding: {
|
||||
if (!(aFlags & IGNORE_PADDING)) {
|
||||
const nsStyleSides& stylePadding =
|
||||
aFrame->StylePadding()->mPadding;
|
||||
@ -4814,7 +4814,7 @@ nsLayoutUtils::IntrinsicForAxis(PhysicalAxis aAxis,
|
||||
}
|
||||
// fall through
|
||||
}
|
||||
case NS_STYLE_BOX_SIZING_CONTENT:
|
||||
case StyleBoxSizing::Content:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
@ -5191,11 +5191,15 @@ nsLayoutUtils::ComputeSizeWithIntrinsicDimensions(WritingMode aWM,
|
||||
|
||||
LogicalSize boxSizingAdjust(aWM);
|
||||
switch (stylePos->mBoxSizing) {
|
||||
case NS_STYLE_BOX_SIZING_BORDER:
|
||||
case StyleBoxSizing::Border:
|
||||
boxSizingAdjust += aBorder;
|
||||
// fall through
|
||||
case NS_STYLE_BOX_SIZING_PADDING:
|
||||
case StyleBoxSizing::Padding:
|
||||
boxSizingAdjust += aPadding;
|
||||
// fall through
|
||||
case StyleBoxSizing::Content:
|
||||
// nothing
|
||||
break;
|
||||
}
|
||||
nscoord boxSizingToMarginEdgeISize =
|
||||
aMargin.ISize(aWM) + aBorder.ISize(aWM) + aPadding.ISize(aWM) -
|
||||
|
@ -4304,11 +4304,15 @@ nsFrame::ComputeSize(nsRenderingContext *aRenderingContext,
|
||||
const nsStylePosition *stylePos = StylePosition();
|
||||
|
||||
switch (stylePos->mBoxSizing) {
|
||||
case NS_STYLE_BOX_SIZING_BORDER:
|
||||
case StyleBoxSizing::Border:
|
||||
boxSizingAdjust += aBorder;
|
||||
// fall through
|
||||
case NS_STYLE_BOX_SIZING_PADDING:
|
||||
case StyleBoxSizing::Padding:
|
||||
boxSizingAdjust += aPadding;
|
||||
// fall through
|
||||
case StyleBoxSizing::Content:
|
||||
// nothing
|
||||
break;
|
||||
}
|
||||
nscoord boxSizingToMarginEdgeISize =
|
||||
aMargin.ISize(aWM) + aBorder.ISize(aWM) + aPadding.ISize(aWM) -
|
||||
|
@ -251,19 +251,22 @@ nsCSSOffsetState::ComputeISizeValue(nscoord aContainingBlockISize,
|
||||
|
||||
nscoord
|
||||
nsCSSOffsetState::ComputeISizeValue(nscoord aContainingBlockISize,
|
||||
uint8_t aBoxSizing,
|
||||
StyleBoxSizing aBoxSizing,
|
||||
const nsStyleCoord& aCoord)
|
||||
{
|
||||
WritingMode wm = GetWritingMode();
|
||||
nscoord inside = 0, outside = ComputedLogicalBorderPadding().IStartEnd(wm) +
|
||||
ComputedLogicalMargin().IStartEnd(wm);
|
||||
switch (aBoxSizing) {
|
||||
case NS_STYLE_BOX_SIZING_BORDER:
|
||||
case StyleBoxSizing::Border:
|
||||
inside = ComputedLogicalBorderPadding().IStartEnd(wm);
|
||||
break;
|
||||
case NS_STYLE_BOX_SIZING_PADDING:
|
||||
case StyleBoxSizing::Padding:
|
||||
inside = ComputedLogicalPadding().IStartEnd(wm);
|
||||
break;
|
||||
case StyleBoxSizing::Content:
|
||||
// nothing
|
||||
break;
|
||||
}
|
||||
outside -= inside;
|
||||
|
||||
@ -273,18 +276,21 @@ nsCSSOffsetState::ComputeISizeValue(nscoord aContainingBlockISize,
|
||||
|
||||
nscoord
|
||||
nsCSSOffsetState::ComputeBSizeValue(nscoord aContainingBlockBSize,
|
||||
uint8_t aBoxSizing,
|
||||
StyleBoxSizing aBoxSizing,
|
||||
const nsStyleCoord& aCoord)
|
||||
{
|
||||
WritingMode wm = GetWritingMode();
|
||||
nscoord inside = 0;
|
||||
switch (aBoxSizing) {
|
||||
case NS_STYLE_BOX_SIZING_BORDER:
|
||||
case StyleBoxSizing::Border:
|
||||
inside = ComputedLogicalBorderPadding().BStartEnd(wm);
|
||||
break;
|
||||
case NS_STYLE_BOX_SIZING_PADDING:
|
||||
case StyleBoxSizing::Padding:
|
||||
inside = ComputedLogicalPadding().BStartEnd(wm);
|
||||
break;
|
||||
case StyleBoxSizing::Content:
|
||||
// nothing
|
||||
break;
|
||||
}
|
||||
return nsLayoutUtils::ComputeBSizeValue(aContainingBlockBSize,
|
||||
inside, aCoord);
|
||||
@ -1133,11 +1139,15 @@ nsHTMLReflowState::CalculateBorderPaddingMargin(
|
||||
nscoord outside = paddingStartEnd + borderStartEnd + marginStartEnd;
|
||||
nscoord inside = 0;
|
||||
switch (mStylePosition->mBoxSizing) {
|
||||
case NS_STYLE_BOX_SIZING_BORDER:
|
||||
case StyleBoxSizing::Border:
|
||||
inside += borderStartEnd;
|
||||
// fall through
|
||||
case NS_STYLE_BOX_SIZING_PADDING:
|
||||
case StyleBoxSizing::Padding:
|
||||
inside += paddingStartEnd;
|
||||
// fall through
|
||||
case StyleBoxSizing::Content:
|
||||
// nothing
|
||||
break;
|
||||
}
|
||||
outside -= inside;
|
||||
*aInsideBoxSizing = inside;
|
||||
|
@ -250,11 +250,11 @@ protected:
|
||||
// same as previous, but using mComputedBorderPadding, mComputedPadding,
|
||||
// and mComputedMargin
|
||||
nscoord ComputeISizeValue(nscoord aContainingBlockISize,
|
||||
uint8_t aBoxSizing,
|
||||
mozilla::StyleBoxSizing aBoxSizing,
|
||||
const nsStyleCoord& aCoord);
|
||||
|
||||
nscoord ComputeBSizeValue(nscoord aContainingBlockBSize,
|
||||
uint8_t aBoxSizing,
|
||||
mozilla::StyleBoxSizing aBoxSizing,
|
||||
const nsStyleCoord& aCoord);
|
||||
};
|
||||
|
||||
|
@ -988,9 +988,9 @@ const KTableEntry nsCSSProps::kBoxShadowTypeKTable[] = {
|
||||
};
|
||||
|
||||
const KTableEntry nsCSSProps::kBoxSizingKTable[] = {
|
||||
{ eCSSKeyword_content_box, NS_STYLE_BOX_SIZING_CONTENT },
|
||||
{ eCSSKeyword_border_box, NS_STYLE_BOX_SIZING_BORDER },
|
||||
{ eCSSKeyword_padding_box, NS_STYLE_BOX_SIZING_PADDING },
|
||||
{ eCSSKeyword_content_box, uint8_t(StyleBoxSizing::Content) },
|
||||
{ eCSSKeyword_border_box, uint8_t(StyleBoxSizing::Border) },
|
||||
{ eCSSKeyword_padding_box, uint8_t(StyleBoxSizing::Padding) },
|
||||
{ eCSSKeyword_UNKNOWN, -1 }
|
||||
};
|
||||
|
||||
|
@ -533,12 +533,15 @@ nsComputedDOMStyle::GetAdjustedValuesForBoxSizing()
|
||||
|
||||
nsMargin adjustment;
|
||||
switch(stylePos->mBoxSizing) {
|
||||
case NS_STYLE_BOX_SIZING_BORDER:
|
||||
case StyleBoxSizing::Border:
|
||||
adjustment += mInnerFrame->GetUsedBorder();
|
||||
// fall through
|
||||
|
||||
case NS_STYLE_BOX_SIZING_PADDING:
|
||||
case StyleBoxSizing::Padding:
|
||||
adjustment += mInnerFrame->GetUsedPadding();
|
||||
// fall through
|
||||
case StyleBoxSizing::Content:
|
||||
// nothing
|
||||
break;
|
||||
}
|
||||
|
||||
return adjustment;
|
||||
@ -3779,7 +3782,7 @@ nsComputedDOMStyle::DoGetBoxSizing()
|
||||
{
|
||||
nsROCSSPrimitiveValue *val = new nsROCSSPrimitiveValue;
|
||||
val->SetIdent(
|
||||
nsCSSProps::ValueToKeywordEnum(StylePosition()->mBoxSizing,
|
||||
nsCSSProps::ValueToKeywordEnum(uint8_t(StylePosition()->mBoxSizing),
|
||||
nsCSSProps::kBoxSizingKTable));
|
||||
return val;
|
||||
}
|
||||
|
@ -1307,14 +1307,14 @@ SetDiscrete(const nsCSSValue& aValue, FieldT & aField,
|
||||
// but they have to say which
|
||||
case eCSSUnit_Enumerated:
|
||||
if (aMask & SETDSC_ENUMERATED) {
|
||||
aField = aValue.GetIntValue();
|
||||
aField = FieldT(aValue.GetIntValue());
|
||||
return;
|
||||
}
|
||||
break;
|
||||
|
||||
case eCSSUnit_Integer:
|
||||
if (aMask & SETDSC_INTEGER) {
|
||||
aField = aValue.GetIntValue();
|
||||
aField = FieldT(aValue.GetIntValue());
|
||||
return;
|
||||
}
|
||||
break;
|
||||
@ -7856,7 +7856,11 @@ nsRuleNode::ComputePositionData(void* aStartStruct,
|
||||
pos->mBoxSizing, conditions,
|
||||
SETDSC_ENUMERATED | SETDSC_UNSET_INITIAL,
|
||||
parentPos->mBoxSizing,
|
||||
NS_STYLE_BOX_SIZING_CONTENT, 0, 0, 0, 0);
|
||||
StyleBoxSizing::Content,
|
||||
StyleBoxSizing::Content /* ignored */,
|
||||
StyleBoxSizing::Content /* ignored */,
|
||||
StyleBoxSizing::Content /* ignored */,
|
||||
StyleBoxSizing::Content /* ignored */);
|
||||
|
||||
// align-content: enum, inherit, initial
|
||||
const auto& alignContentValue = *aRuleData->ValueForAlignContent();
|
||||
|
@ -18,13 +18,12 @@ namespace mozilla {
|
||||
namespace css {
|
||||
typedef mozilla::Side Side;
|
||||
} // namespace css
|
||||
} // namespace mozilla
|
||||
|
||||
#define NS_FOR_CSS_SIDES(var_) for (mozilla::css::Side var_ = NS_SIDE_TOP; var_ <= NS_SIDE_LEFT; var_++)
|
||||
static inline mozilla::css::Side operator++(mozilla::css::Side& side, int) {
|
||||
static inline css::Side operator++(css::Side& side, int) {
|
||||
NS_PRECONDITION(side >= NS_SIDE_TOP &&
|
||||
side <= NS_SIDE_LEFT, "Out of range side");
|
||||
side = mozilla::css::Side(side + 1);
|
||||
side = css::Side(side + 1);
|
||||
return side;
|
||||
}
|
||||
|
||||
@ -57,9 +56,11 @@ static inline mozilla::css::Side operator++(mozilla::css::Side& side, int) {
|
||||
((((side_) + !!(second_))*2 + ((side_) + !(parallel_))%2) % 8)
|
||||
|
||||
// box-sizing
|
||||
#define NS_STYLE_BOX_SIZING_CONTENT 0
|
||||
#define NS_STYLE_BOX_SIZING_PADDING 1
|
||||
#define NS_STYLE_BOX_SIZING_BORDER 2
|
||||
enum class StyleBoxSizing : uint8_t {
|
||||
Content,
|
||||
Padding,
|
||||
Border
|
||||
};
|
||||
|
||||
// clip-path sizing
|
||||
#define NS_STYLE_CLIP_SHAPE_SIZING_NOBOX 0
|
||||
@ -1158,4 +1159,6 @@ static inline mozilla::css::Side operator++(mozilla::css::Side& side, int) {
|
||||
#define NS_STYLE_SCAN_PROGRESSIVE 0
|
||||
#define NS_STYLE_SCAN_INTERLACE 1
|
||||
|
||||
} // namespace mozilla
|
||||
|
||||
#endif /* nsStyleConsts_h___ */
|
||||
|
@ -1434,7 +1434,7 @@ nsStylePosition::nsStylePosition(void)
|
||||
mGridAutoRowsMax.SetAutoValue();
|
||||
|
||||
mGridAutoFlow = NS_STYLE_GRID_AUTO_FLOW_ROW;
|
||||
mBoxSizing = NS_STYLE_BOX_SIZING_CONTENT;
|
||||
mBoxSizing = StyleBoxSizing::Content;
|
||||
mAlignContent = NS_STYLE_ALIGN_AUTO;
|
||||
mAlignItems = NS_STYLE_ALIGN_AUTO;
|
||||
mAlignSelf = NS_STYLE_ALIGN_AUTO;
|
||||
|
@ -1459,7 +1459,7 @@ struct nsStylePosition {
|
||||
nsStyleCoord mGridAutoRowsMin; // [reset] coord, percent, enum, calc, flex
|
||||
nsStyleCoord mGridAutoRowsMax; // [reset] coord, percent, enum, calc, flex
|
||||
uint8_t mGridAutoFlow; // [reset] enumerated. See nsStyleConsts.h
|
||||
uint8_t mBoxSizing; // [reset] see nsStyleConsts.h
|
||||
mozilla::StyleBoxSizing mBoxSizing; // [reset] see nsStyleConsts.h
|
||||
private:
|
||||
friend class nsRuleNode;
|
||||
// Helper for the ComputedAlign/Justify* methods.
|
||||
|
@ -121,16 +121,15 @@ GetISizeInfo(nsRenderingContext *aRenderingContext,
|
||||
}
|
||||
else {
|
||||
switch (stylePos->mBoxSizing) {
|
||||
case NS_STYLE_BOX_SIZING_CONTENT:
|
||||
case StyleBoxSizing::Content:
|
||||
boxSizingToBorderEdge = offsets.hPadding + offsets.hBorder;
|
||||
break;
|
||||
case NS_STYLE_BOX_SIZING_PADDING:
|
||||
case StyleBoxSizing::Padding:
|
||||
minCoord += offsets.hPadding;
|
||||
prefCoord += offsets.hPadding;
|
||||
boxSizingToBorderEdge = offsets.hBorder;
|
||||
break;
|
||||
default:
|
||||
// NS_STYLE_BOX_SIZING_BORDER
|
||||
case StyleBoxSizing::Border:
|
||||
minCoord += offsets.hPadding + offsets.hBorder;
|
||||
prefCoord += offsets.hPadding + offsets.hBorder;
|
||||
break;
|
||||
|
@ -258,13 +258,13 @@ FixedTableLayoutStrategy::ComputeColumnISizes(const nsHTMLReflowState& aReflowSt
|
||||
|
||||
nscoord boxSizingAdjust = 0;
|
||||
switch (cellFrame->StylePosition()->mBoxSizing) {
|
||||
case NS_STYLE_BOX_SIZING_CONTENT:
|
||||
case StyleBoxSizing::Content:
|
||||
boxSizingAdjust += offsets.hPadding;
|
||||
// Fall through
|
||||
case NS_STYLE_BOX_SIZING_PADDING:
|
||||
case StyleBoxSizing::Padding:
|
||||
boxSizingAdjust += offsets.hBorder;
|
||||
// Fall through
|
||||
case NS_STYLE_BOX_SIZING_BORDER:
|
||||
case StyleBoxSizing::Border:
|
||||
// Don't add anything
|
||||
break;
|
||||
}
|
||||
|
@ -669,16 +669,15 @@ nsTableRowFrame::CalculateCellActualBSize(nsTableCellFrame* aCellFrame,
|
||||
// for bsize)
|
||||
if (PresContext()->CompatibilityMode() != eCompatibility_NavQuirks) {
|
||||
switch (position->mBoxSizing) {
|
||||
case NS_STYLE_BOX_SIZING_CONTENT:
|
||||
case StyleBoxSizing::Content:
|
||||
outsideBoxSizing =
|
||||
aCellFrame->GetLogicalUsedBorderAndPadding(aWM).BStartEnd(aWM);
|
||||
break;
|
||||
case NS_STYLE_BOX_SIZING_PADDING:
|
||||
case StyleBoxSizing::Padding:
|
||||
outsideBoxSizing =
|
||||
aCellFrame->GetLogicalUsedBorder(aWM).BStartEnd(aWM);
|
||||
break;
|
||||
default:
|
||||
// NS_STYLE_BOX_SIZING_BORDER
|
||||
case StyleBoxSizing::Border:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
@ -81,11 +81,14 @@ nsResizerFrame::HandleEvent(nsPresContext* aPresContext,
|
||||
// adjust to get the desired content rectangle.
|
||||
nsRect rect = frameToResize->GetScreenRectInAppUnits();
|
||||
switch (frameToResize->StylePosition()->mBoxSizing) {
|
||||
case NS_STYLE_BOX_SIZING_CONTENT:
|
||||
case StyleBoxSizing::Content:
|
||||
rect.Deflate(frameToResize->GetUsedPadding());
|
||||
case NS_STYLE_BOX_SIZING_PADDING:
|
||||
// fall through
|
||||
case StyleBoxSizing::Padding:
|
||||
rect.Deflate(frameToResize->GetUsedBorder());
|
||||
default:
|
||||
// fall through
|
||||
case StyleBoxSizing::Border:
|
||||
// nothing
|
||||
break;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user