mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-12 12:55:46 +00:00
Add calc() support for two properties I missed: outline-width and column-gap. (Bug 363249) r=bzbarsky a2.0=blocking2.0:beta6
This commit is contained in:
parent
7a0e99bcfb
commit
d282153a9d
@ -5640,7 +5640,8 @@ CSSParserImpl::ParseSingleValueProperty(nsCSSValue& aValue,
|
||||
case eCSSProperty__moz_column_width:
|
||||
return ParseNonNegativeVariant(aValue, VARIANT_AHL | VARIANT_CALC, nsnull);
|
||||
case eCSSProperty__moz_column_gap:
|
||||
return ParseNonNegativeVariant(aValue, VARIANT_HL | VARIANT_NORMAL, nsnull);
|
||||
return ParseNonNegativeVariant(aValue, VARIANT_HL | VARIANT_NORMAL |
|
||||
VARIANT_CALC, nsnull);
|
||||
case eCSSProperty_bottom:
|
||||
case eCSSProperty_top:
|
||||
case eCSSProperty_left:
|
||||
@ -5860,7 +5861,7 @@ CSSParserImpl::ParseSingleValueProperty(nsCSSValue& aValue,
|
||||
return ParseVariant(aValue, VARIANT_HK,
|
||||
nsCSSProps::kOutlineStyleKTable);
|
||||
case eCSSProperty_outline_width:
|
||||
return ParseNonNegativeVariant(aValue, VARIANT_HKL,
|
||||
return ParseNonNegativeVariant(aValue, VARIANT_HKL | VARIANT_CALC,
|
||||
nsCSSProps::kBorderWidthKTable);
|
||||
case eCSSProperty_outline_offset:
|
||||
return ParseVariant(aValue, VARIANT_HL | VARIANT_CALC, nsnull);
|
||||
|
@ -5345,7 +5345,8 @@ nsRuleNode::ComputeOutlineData(void* aStartStruct,
|
||||
}
|
||||
else {
|
||||
SetCoord(marginData.mOutlineWidth, outline->mOutlineWidth,
|
||||
parentOutline->mOutlineWidth, SETCOORD_LEH, aContext,
|
||||
parentOutline->mOutlineWidth,
|
||||
SETCOORD_LEH | SETCOORD_CALC_LENGTH_ONLY, aContext,
|
||||
mPresContext, canStoreInRuleTree);
|
||||
}
|
||||
|
||||
@ -6024,11 +6025,17 @@ nsRuleNode::ComputeColumnData(void* aStartStruct,
|
||||
SETCOORD_CALC_LENGTH_ONLY | SETCOORD_CALC_CLAMP_NONNEGATIVE,
|
||||
aContext, mPresContext, canStoreInRuleTree);
|
||||
|
||||
// column-gap: length, percentage, inherit, normal
|
||||
// column-gap: length, inherit, normal
|
||||
SetCoord(columnData.mColumnGap,
|
||||
column->mColumnGap, parent->mColumnGap,
|
||||
SETCOORD_LPH | SETCOORD_NORMAL | SETCOORD_INITIAL_NORMAL,
|
||||
SETCOORD_LH | SETCOORD_NORMAL | SETCOORD_INITIAL_NORMAL |
|
||||
SETCOORD_CALC_LENGTH_ONLY,
|
||||
aContext, mPresContext, canStoreInRuleTree);
|
||||
// clamp negative calc() to 0
|
||||
if (column->mColumnGap.GetUnit() == eStyleUnit_Coord) {
|
||||
column->mColumnGap.SetCoordValue(
|
||||
NS_MAX(column->mColumnGap.GetCoordValue(), 0));
|
||||
}
|
||||
|
||||
// column-count: auto, integer, inherit
|
||||
if (eCSSUnit_Auto == columnData.mColumnCount.GetUnit() ||
|
||||
|
@ -630,8 +630,9 @@ nsStyleOutline::RecalcData(nsPresContext* aContext)
|
||||
mCachedOutlineWidth = 0;
|
||||
mHasCachedOutline = PR_TRUE;
|
||||
} else if (IsFixedUnit(mOutlineWidth, PR_TRUE)) {
|
||||
// Clamp negative calc() to 0.
|
||||
mCachedOutlineWidth =
|
||||
CalcCoord(mOutlineWidth, aContext->GetBorderWidthTable(), 3);
|
||||
NS_MAX(CalcCoord(mOutlineWidth, aContext->GetBorderWidthTable(), 3), 0);
|
||||
mCachedOutlineWidth =
|
||||
NS_ROUND_BORDER_TO_PIXELS(mCachedOutlineWidth, mTwipsPerPixel);
|
||||
mHasCachedOutline = PR_TRUE;
|
||||
|
@ -406,8 +406,18 @@ var gCSSProperties = {
|
||||
domProp: "MozColumnGap",
|
||||
inherited: false,
|
||||
type: CSS_TYPE_LONGHAND,
|
||||
initial_values: [ "normal", "1em" ],
|
||||
other_values: [ "2px", "4em" ],
|
||||
initial_values: [ "normal", "1em", "-moz-calc(-2em + 3em)" ],
|
||||
other_values: [ "2px", "4em",
|
||||
"-moz-calc(2px)",
|
||||
"-moz-calc(-2px)",
|
||||
"-moz-calc(0)",
|
||||
"-moz-calc(0pt)",
|
||||
"-moz-calc(5em)",
|
||||
"-moz-calc(3*25px)",
|
||||
"-moz-calc(25px*3)",
|
||||
"-moz-calc(3*25px + 5em)",
|
||||
"-moz-min(3em, 30em,200px, min(500px ,40em))",
|
||||
],
|
||||
invalid_values: [ "3%", "-1px" ]
|
||||
},
|
||||
"-moz-column-rule": {
|
||||
@ -2076,8 +2086,18 @@ var gCSSProperties = {
|
||||
inherited: false,
|
||||
type: CSS_TYPE_LONGHAND,
|
||||
prerequisites: { "outline-style": "solid" },
|
||||
initial_values: [ "medium", "3px" ],
|
||||
other_values: [ "thin", "thick", "1px", "2em" ],
|
||||
initial_values: [ "medium", "3px", "-moz-calc(4px - 1px)" ],
|
||||
other_values: [ "thin", "thick", "1px", "2em",
|
||||
"-moz-calc(2px)",
|
||||
"-moz-calc(-2px)",
|
||||
"-moz-calc(0)",
|
||||
"-moz-calc(0px)",
|
||||
"-moz-calc(5em)",
|
||||
"-moz-calc(3*25px)",
|
||||
"-moz-calc(25px*3)",
|
||||
"-moz-calc(3*25px + 5em)",
|
||||
"-moz-min(3em, 30em,200px, min(500px ,40em))",
|
||||
],
|
||||
invalid_values: [ "5%" ]
|
||||
},
|
||||
"overflow": {
|
||||
|
Loading…
Reference in New Issue
Block a user