diff --git a/mozilla/content/base/src/nsStyleContext.cpp b/mozilla/content/base/src/nsStyleContext.cpp index fb9cfe46c9a..95ec8a8cd8a 100644 --- a/mozilla/content/base/src/nsStyleContext.cpp +++ b/mozilla/content/base/src/nsStyleContext.cpp @@ -490,7 +490,6 @@ void StyleSpacingImpl::ResetFrom(const nsStyleSpacing* aParent, nsIPresContext* mBorder.SetTop(medium); mBorder.SetRight(medium); mBorder.SetBottom(medium); - mBorderStyle[0] = NS_STYLE_BORDER_STYLE_NONE; mBorderStyle[1] = NS_STYLE_BORDER_STYLE_NONE; @@ -509,6 +508,8 @@ void StyleSpacingImpl::ResetFrom(const nsStyleSpacing* aParent, nsIPresContext* mOutlineStyle = NS_STYLE_BORDER_STYLE_NONE; mOutlineColor = NS_RGB(0, 0, 0); + mCompatFloaterMargin.SetAutoValue(); // not inherited + mFloatEdge = NS_STYLE_FLOAT_EDGE_CONTENT; mHasCachedMargin = PR_FALSE; @@ -671,7 +672,8 @@ PRInt32 StyleSpacingImpl::CalcDifference(const StyleSpacingImpl& aOther) const if ((mMargin == aOther.mMargin) && (mPadding == aOther.mPadding) && (mBorder == aOther.mBorder) && - (mFloatEdge == aOther.mFloatEdge)) { + (mFloatEdge == aOther.mFloatEdge) && + (mCompatFloaterMargin == aOther.mCompatFloaterMargin)) { PRInt32 ix; for (ix = 0; ix < 4; ix++) { if ((mBorderStyle[ix] != aOther.mBorderStyle[ix]) || diff --git a/mozilla/content/html/style/src/nsCSSDeclaration.cpp b/mozilla/content/html/style/src/nsCSSDeclaration.cpp index 739232df96a..4f81bdb35fa 100644 --- a/mozilla/content/html/style/src/nsCSSDeclaration.cpp +++ b/mozilla/content/html/style/src/nsCSSDeclaration.cpp @@ -378,6 +378,7 @@ nsCSSMargin::nsCSSMargin(const nsCSSMargin& aCopy) : mMargin(nsnull), mPadding(nsnull), mBorderWidth(nsnull), mBorderColor(nsnull), mBorderStyle(nsnull), mBorderRadius(aCopy.mBorderRadius), + mCompatFloaterMargin(aCopy.mCompatFloaterMargin), mOutlineWidth(aCopy.mOutlineWidth), mOutlineColor(aCopy.mOutlineColor), mOutlineStyle(aCopy.mOutlineStyle), @@ -444,6 +445,7 @@ void nsCSSMargin::List(FILE* out, PRInt32 aIndent) const nsAutoString buffer; mBorderRadius.AppendToString(buffer, eCSSProperty__moz_border_radius); + mCompatFloaterMargin.AppendToString(buffer, eCSSProperty__moz_compat_floater_margin); mOutlineWidth.AppendToString(buffer, eCSSProperty_outline_width); mOutlineColor.AppendToString(buffer, eCSSProperty_outline_color); mOutlineStyle.AppendToString(buffer, eCSSProperty_outline_style); @@ -1359,6 +1361,7 @@ CSSDeclarationImpl::AppendValue(nsCSSProperty aProperty, const nsCSSValue& aValu break; case eCSSProperty__moz_border_radius: + case eCSSProperty__moz_compat_floater_margin: case eCSSProperty_outline_width: case eCSSProperty_outline_color: case eCSSProperty_outline_style: @@ -1366,6 +1369,7 @@ CSSDeclarationImpl::AppendValue(nsCSSProperty aProperty, const nsCSSValue& aValu CSS_ENSURE(Margin) { switch (aProperty) { case eCSSProperty__moz_border_radius: mMargin->mBorderRadius = aValue; break; + case eCSSProperty__moz_compat_floater_margin: mMargin->mCompatFloaterMargin = aValue; break; case eCSSProperty_outline_width: mMargin->mOutlineWidth = aValue; break; case eCSSProperty_outline_color: mMargin->mOutlineColor = aValue; break; case eCSSProperty_outline_style: mMargin->mOutlineStyle = aValue; break; @@ -2012,6 +2016,7 @@ CSSDeclarationImpl::SetValueImportant(nsCSSProperty aProperty) break; case eCSSProperty__moz_border_radius: + case eCSSProperty__moz_compat_floater_margin: case eCSSProperty_outline_width: case eCSSProperty_outline_color: case eCSSProperty_outline_style: @@ -2020,6 +2025,7 @@ CSSDeclarationImpl::SetValueImportant(nsCSSProperty aProperty) CSS_ENSURE_IMPORTANT(Margin) { switch (aProperty) { CSS_CASE_IMPORTANT(eCSSProperty__moz_border_radius, mMargin->mBorderRadius); + CSS_CASE_IMPORTANT(eCSSProperty__moz_compat_floater_margin, mMargin->mCompatFloaterMargin); CSS_CASE_IMPORTANT(eCSSProperty_outline_width, mMargin->mOutlineWidth); CSS_CASE_IMPORTANT(eCSSProperty_outline_color, mMargin->mOutlineColor); CSS_CASE_IMPORTANT(eCSSProperty_outline_style, mMargin->mOutlineStyle); @@ -2688,6 +2694,7 @@ CSSDeclarationImpl::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue) break; case eCSSProperty__moz_border_radius: + case eCSSProperty__moz_compat_floater_margin: case eCSSProperty_outline_width: case eCSSProperty_outline_color: case eCSSProperty_outline_style: @@ -2695,6 +2702,7 @@ CSSDeclarationImpl::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue) if (nsnull != mMargin) { switch (aProperty) { case eCSSProperty__moz_border_radius: aValue = mMargin->mBorderRadius; break; + case eCSSProperty__moz_compat_floater_margin: aValue = mMargin->mCompatFloaterMargin; break; case eCSSProperty_outline_width: aValue = mMargin->mOutlineWidth; break; case eCSSProperty_outline_color: aValue = mMargin->mOutlineColor; break; case eCSSProperty_outline_style: aValue = mMargin->mOutlineStyle; break; diff --git a/mozilla/content/html/style/src/nsCSSKeywordList.h b/mozilla/content/html/style/src/nsCSSKeywordList.h index 822307209ba..cff40f74a30 100644 --- a/mozilla/content/html/style/src/nsCSSKeywordList.h +++ b/mozilla/content/html/style/src/nsCSSKeywordList.h @@ -37,9 +37,9 @@ CSS_KEY(_moz_bg_inset) CSS_KEY(_moz_bg_outset) -CSS_KEY(_moz_pre_wrap) CSS_KEY(_moz_center) CSS_KEY(_moz_right) +CSS_KEY(_moz_pre_wrap) CSS_KEY(above) CSS_KEY(absolute) CSS_KEY(activeborder) diff --git a/mozilla/content/html/style/src/nsCSSParser.cpp b/mozilla/content/html/style/src/nsCSSParser.cpp index ad2f1304536..e81b9496071 100644 --- a/mozilla/content/html/style/src/nsCSSParser.cpp +++ b/mozilla/content/html/style/src/nsCSSParser.cpp @@ -2892,6 +2892,7 @@ PRBool CSSParserImpl::ParseSingleValueProperty(PRInt32& aErrorCode, case eCSSProperty_margin_left: case eCSSProperty_margin_right: case eCSSProperty_margin_top: + case eCSSProperty__moz_compat_floater_margin: return ParseVariant(aErrorCode, aValue, VARIANT_AHLP, nsnull); case eCSSProperty_marker_offset: return ParseVariant(aErrorCode, aValue, VARIANT_AHL, nsnull); diff --git a/mozilla/content/html/style/src/nsCSSPropList.h b/mozilla/content/html/style/src/nsCSSPropList.h index a81cbf8b21a..ad6ebfb3c12 100644 --- a/mozilla/content/html/style/src/nsCSSPropList.h +++ b/mozilla/content/html/style/src/nsCSSPropList.h @@ -39,6 +39,7 @@ CSS_PROP(_moz_border_radius, VISUAL) +CSS_PROP(_moz_compat_floater_margin, REFLOW) CSS_PROP(azimuth, AURAL) CSS_PROP(background, VISUAL) CSS_PROP(background_attachment, VISUAL) diff --git a/mozilla/content/html/style/src/nsCSSStruct.cpp b/mozilla/content/html/style/src/nsCSSStruct.cpp index 739232df96a..4f81bdb35fa 100644 --- a/mozilla/content/html/style/src/nsCSSStruct.cpp +++ b/mozilla/content/html/style/src/nsCSSStruct.cpp @@ -378,6 +378,7 @@ nsCSSMargin::nsCSSMargin(const nsCSSMargin& aCopy) : mMargin(nsnull), mPadding(nsnull), mBorderWidth(nsnull), mBorderColor(nsnull), mBorderStyle(nsnull), mBorderRadius(aCopy.mBorderRadius), + mCompatFloaterMargin(aCopy.mCompatFloaterMargin), mOutlineWidth(aCopy.mOutlineWidth), mOutlineColor(aCopy.mOutlineColor), mOutlineStyle(aCopy.mOutlineStyle), @@ -444,6 +445,7 @@ void nsCSSMargin::List(FILE* out, PRInt32 aIndent) const nsAutoString buffer; mBorderRadius.AppendToString(buffer, eCSSProperty__moz_border_radius); + mCompatFloaterMargin.AppendToString(buffer, eCSSProperty__moz_compat_floater_margin); mOutlineWidth.AppendToString(buffer, eCSSProperty_outline_width); mOutlineColor.AppendToString(buffer, eCSSProperty_outline_color); mOutlineStyle.AppendToString(buffer, eCSSProperty_outline_style); @@ -1359,6 +1361,7 @@ CSSDeclarationImpl::AppendValue(nsCSSProperty aProperty, const nsCSSValue& aValu break; case eCSSProperty__moz_border_radius: + case eCSSProperty__moz_compat_floater_margin: case eCSSProperty_outline_width: case eCSSProperty_outline_color: case eCSSProperty_outline_style: @@ -1366,6 +1369,7 @@ CSSDeclarationImpl::AppendValue(nsCSSProperty aProperty, const nsCSSValue& aValu CSS_ENSURE(Margin) { switch (aProperty) { case eCSSProperty__moz_border_radius: mMargin->mBorderRadius = aValue; break; + case eCSSProperty__moz_compat_floater_margin: mMargin->mCompatFloaterMargin = aValue; break; case eCSSProperty_outline_width: mMargin->mOutlineWidth = aValue; break; case eCSSProperty_outline_color: mMargin->mOutlineColor = aValue; break; case eCSSProperty_outline_style: mMargin->mOutlineStyle = aValue; break; @@ -2012,6 +2016,7 @@ CSSDeclarationImpl::SetValueImportant(nsCSSProperty aProperty) break; case eCSSProperty__moz_border_radius: + case eCSSProperty__moz_compat_floater_margin: case eCSSProperty_outline_width: case eCSSProperty_outline_color: case eCSSProperty_outline_style: @@ -2020,6 +2025,7 @@ CSSDeclarationImpl::SetValueImportant(nsCSSProperty aProperty) CSS_ENSURE_IMPORTANT(Margin) { switch (aProperty) { CSS_CASE_IMPORTANT(eCSSProperty__moz_border_radius, mMargin->mBorderRadius); + CSS_CASE_IMPORTANT(eCSSProperty__moz_compat_floater_margin, mMargin->mCompatFloaterMargin); CSS_CASE_IMPORTANT(eCSSProperty_outline_width, mMargin->mOutlineWidth); CSS_CASE_IMPORTANT(eCSSProperty_outline_color, mMargin->mOutlineColor); CSS_CASE_IMPORTANT(eCSSProperty_outline_style, mMargin->mOutlineStyle); @@ -2688,6 +2694,7 @@ CSSDeclarationImpl::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue) break; case eCSSProperty__moz_border_radius: + case eCSSProperty__moz_compat_floater_margin: case eCSSProperty_outline_width: case eCSSProperty_outline_color: case eCSSProperty_outline_style: @@ -2695,6 +2702,7 @@ CSSDeclarationImpl::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue) if (nsnull != mMargin) { switch (aProperty) { case eCSSProperty__moz_border_radius: aValue = mMargin->mBorderRadius; break; + case eCSSProperty__moz_compat_floater_margin: aValue = mMargin->mCompatFloaterMargin; break; case eCSSProperty_outline_width: aValue = mMargin->mOutlineWidth; break; case eCSSProperty_outline_color: aValue = mMargin->mOutlineColor; break; case eCSSProperty_outline_style: aValue = mMargin->mOutlineStyle; break; diff --git a/mozilla/content/html/style/src/nsCSSStyleRule.cpp b/mozilla/content/html/style/src/nsCSSStyleRule.cpp index 0326b33e93e..f54b5203111 100644 --- a/mozilla/content/html/style/src/nsCSSStyleRule.cpp +++ b/mozilla/content/html/style/src/nsCSSStyleRule.cpp @@ -1964,6 +1964,11 @@ MapDeclarationMarginInto(nsICSSDeclaration* aDeclaration, SETCOORD_LPH, aFont->mFont, aPresContext)) { } + // -moz-compat-floater-margin: length, percent, auto, inherit + if (! SetCoord(ourMargin->mCompatFloaterMargin, spacing->mCompatFloaterMargin, parentSpacing->mCompatFloaterMargin, + SETCOORD_LPAH, aFont->mFont, aPresContext)) { + } + // outline-width: length, enum, inherit if (! SetCoord(ourMargin->mOutlineWidth, spacing->mOutlineWidth, parentSpacing->mOutlineWidth, SETCOORD_LEH, aFont->mFont, aPresContext)) { diff --git a/mozilla/content/html/style/src/nsICSSDeclaration.h b/mozilla/content/html/style/src/nsICSSDeclaration.h index 889d7f43c37..f59db9c0f48 100644 --- a/mozilla/content/html/style/src/nsICSSDeclaration.h +++ b/mozilla/content/html/style/src/nsICSSDeclaration.h @@ -212,6 +212,7 @@ struct nsCSSMargin : public nsCSSStruct { nsCSSRect* mBorderColor; nsCSSRect* mBorderStyle; nsCSSValue mBorderRadius; // (extension) + nsCSSValue mCompatFloaterMargin; // (extension) nsCSSValue mOutlineWidth; nsCSSValue mOutlineColor; nsCSSValue mOutlineStyle; diff --git a/mozilla/content/shared/public/nsCSSKeywordList.h b/mozilla/content/shared/public/nsCSSKeywordList.h index 822307209ba..cff40f74a30 100644 --- a/mozilla/content/shared/public/nsCSSKeywordList.h +++ b/mozilla/content/shared/public/nsCSSKeywordList.h @@ -37,9 +37,9 @@ CSS_KEY(_moz_bg_inset) CSS_KEY(_moz_bg_outset) -CSS_KEY(_moz_pre_wrap) CSS_KEY(_moz_center) CSS_KEY(_moz_right) +CSS_KEY(_moz_pre_wrap) CSS_KEY(above) CSS_KEY(absolute) CSS_KEY(activeborder) diff --git a/mozilla/content/shared/public/nsCSSPropList.h b/mozilla/content/shared/public/nsCSSPropList.h index a81cbf8b21a..ad6ebfb3c12 100644 --- a/mozilla/content/shared/public/nsCSSPropList.h +++ b/mozilla/content/shared/public/nsCSSPropList.h @@ -39,6 +39,7 @@ CSS_PROP(_moz_border_radius, VISUAL) +CSS_PROP(_moz_compat_floater_margin, REFLOW) CSS_PROP(azimuth, AURAL) CSS_PROP(background, VISUAL) CSS_PROP(background_attachment, VISUAL) diff --git a/mozilla/layout/base/public/nsIStyleContext.h b/mozilla/layout/base/public/nsIStyleContext.h index d8d555ad450..458b95d77cb 100644 --- a/mozilla/layout/base/public/nsIStyleContext.h +++ b/mozilla/layout/base/public/nsIStyleContext.h @@ -83,6 +83,8 @@ struct nsStyleSpacing: public nsStyleStruct { PRUint8 mFloatEdge; // [reset] see nsStyleConsts.h + nsStyleCoord mCompatFloaterMargin; // [reset] length, percent, auto, inherit + PRBool GetMargin(nsMargin& aMargin) const; PRBool GetPadding(nsMargin& aPadding) const; PRBool GetBorder(nsMargin& aBorder) const; diff --git a/mozilla/layout/base/src/nsStyleContext.cpp b/mozilla/layout/base/src/nsStyleContext.cpp index fb9cfe46c9a..95ec8a8cd8a 100644 --- a/mozilla/layout/base/src/nsStyleContext.cpp +++ b/mozilla/layout/base/src/nsStyleContext.cpp @@ -490,7 +490,6 @@ void StyleSpacingImpl::ResetFrom(const nsStyleSpacing* aParent, nsIPresContext* mBorder.SetTop(medium); mBorder.SetRight(medium); mBorder.SetBottom(medium); - mBorderStyle[0] = NS_STYLE_BORDER_STYLE_NONE; mBorderStyle[1] = NS_STYLE_BORDER_STYLE_NONE; @@ -509,6 +508,8 @@ void StyleSpacingImpl::ResetFrom(const nsStyleSpacing* aParent, nsIPresContext* mOutlineStyle = NS_STYLE_BORDER_STYLE_NONE; mOutlineColor = NS_RGB(0, 0, 0); + mCompatFloaterMargin.SetAutoValue(); // not inherited + mFloatEdge = NS_STYLE_FLOAT_EDGE_CONTENT; mHasCachedMargin = PR_FALSE; @@ -671,7 +672,8 @@ PRInt32 StyleSpacingImpl::CalcDifference(const StyleSpacingImpl& aOther) const if ((mMargin == aOther.mMargin) && (mPadding == aOther.mPadding) && (mBorder == aOther.mBorder) && - (mFloatEdge == aOther.mFloatEdge)) { + (mFloatEdge == aOther.mFloatEdge) && + (mCompatFloaterMargin == aOther.mCompatFloaterMargin)) { PRInt32 ix; for (ix = 0; ix < 4; ix++) { if ((mBorderStyle[ix] != aOther.mBorderStyle[ix]) || diff --git a/mozilla/layout/html/style/src/nsCSSDeclaration.cpp b/mozilla/layout/html/style/src/nsCSSDeclaration.cpp index 739232df96a..4f81bdb35fa 100644 --- a/mozilla/layout/html/style/src/nsCSSDeclaration.cpp +++ b/mozilla/layout/html/style/src/nsCSSDeclaration.cpp @@ -378,6 +378,7 @@ nsCSSMargin::nsCSSMargin(const nsCSSMargin& aCopy) : mMargin(nsnull), mPadding(nsnull), mBorderWidth(nsnull), mBorderColor(nsnull), mBorderStyle(nsnull), mBorderRadius(aCopy.mBorderRadius), + mCompatFloaterMargin(aCopy.mCompatFloaterMargin), mOutlineWidth(aCopy.mOutlineWidth), mOutlineColor(aCopy.mOutlineColor), mOutlineStyle(aCopy.mOutlineStyle), @@ -444,6 +445,7 @@ void nsCSSMargin::List(FILE* out, PRInt32 aIndent) const nsAutoString buffer; mBorderRadius.AppendToString(buffer, eCSSProperty__moz_border_radius); + mCompatFloaterMargin.AppendToString(buffer, eCSSProperty__moz_compat_floater_margin); mOutlineWidth.AppendToString(buffer, eCSSProperty_outline_width); mOutlineColor.AppendToString(buffer, eCSSProperty_outline_color); mOutlineStyle.AppendToString(buffer, eCSSProperty_outline_style); @@ -1359,6 +1361,7 @@ CSSDeclarationImpl::AppendValue(nsCSSProperty aProperty, const nsCSSValue& aValu break; case eCSSProperty__moz_border_radius: + case eCSSProperty__moz_compat_floater_margin: case eCSSProperty_outline_width: case eCSSProperty_outline_color: case eCSSProperty_outline_style: @@ -1366,6 +1369,7 @@ CSSDeclarationImpl::AppendValue(nsCSSProperty aProperty, const nsCSSValue& aValu CSS_ENSURE(Margin) { switch (aProperty) { case eCSSProperty__moz_border_radius: mMargin->mBorderRadius = aValue; break; + case eCSSProperty__moz_compat_floater_margin: mMargin->mCompatFloaterMargin = aValue; break; case eCSSProperty_outline_width: mMargin->mOutlineWidth = aValue; break; case eCSSProperty_outline_color: mMargin->mOutlineColor = aValue; break; case eCSSProperty_outline_style: mMargin->mOutlineStyle = aValue; break; @@ -2012,6 +2016,7 @@ CSSDeclarationImpl::SetValueImportant(nsCSSProperty aProperty) break; case eCSSProperty__moz_border_radius: + case eCSSProperty__moz_compat_floater_margin: case eCSSProperty_outline_width: case eCSSProperty_outline_color: case eCSSProperty_outline_style: @@ -2020,6 +2025,7 @@ CSSDeclarationImpl::SetValueImportant(nsCSSProperty aProperty) CSS_ENSURE_IMPORTANT(Margin) { switch (aProperty) { CSS_CASE_IMPORTANT(eCSSProperty__moz_border_radius, mMargin->mBorderRadius); + CSS_CASE_IMPORTANT(eCSSProperty__moz_compat_floater_margin, mMargin->mCompatFloaterMargin); CSS_CASE_IMPORTANT(eCSSProperty_outline_width, mMargin->mOutlineWidth); CSS_CASE_IMPORTANT(eCSSProperty_outline_color, mMargin->mOutlineColor); CSS_CASE_IMPORTANT(eCSSProperty_outline_style, mMargin->mOutlineStyle); @@ -2688,6 +2694,7 @@ CSSDeclarationImpl::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue) break; case eCSSProperty__moz_border_radius: + case eCSSProperty__moz_compat_floater_margin: case eCSSProperty_outline_width: case eCSSProperty_outline_color: case eCSSProperty_outline_style: @@ -2695,6 +2702,7 @@ CSSDeclarationImpl::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue) if (nsnull != mMargin) { switch (aProperty) { case eCSSProperty__moz_border_radius: aValue = mMargin->mBorderRadius; break; + case eCSSProperty__moz_compat_floater_margin: aValue = mMargin->mCompatFloaterMargin; break; case eCSSProperty_outline_width: aValue = mMargin->mOutlineWidth; break; case eCSSProperty_outline_color: aValue = mMargin->mOutlineColor; break; case eCSSProperty_outline_style: aValue = mMargin->mOutlineStyle; break; diff --git a/mozilla/layout/html/style/src/nsCSSKeywordList.h b/mozilla/layout/html/style/src/nsCSSKeywordList.h index 822307209ba..cff40f74a30 100644 --- a/mozilla/layout/html/style/src/nsCSSKeywordList.h +++ b/mozilla/layout/html/style/src/nsCSSKeywordList.h @@ -37,9 +37,9 @@ CSS_KEY(_moz_bg_inset) CSS_KEY(_moz_bg_outset) -CSS_KEY(_moz_pre_wrap) CSS_KEY(_moz_center) CSS_KEY(_moz_right) +CSS_KEY(_moz_pre_wrap) CSS_KEY(above) CSS_KEY(absolute) CSS_KEY(activeborder) diff --git a/mozilla/layout/html/style/src/nsCSSParser.cpp b/mozilla/layout/html/style/src/nsCSSParser.cpp index ad2f1304536..e81b9496071 100644 --- a/mozilla/layout/html/style/src/nsCSSParser.cpp +++ b/mozilla/layout/html/style/src/nsCSSParser.cpp @@ -2892,6 +2892,7 @@ PRBool CSSParserImpl::ParseSingleValueProperty(PRInt32& aErrorCode, case eCSSProperty_margin_left: case eCSSProperty_margin_right: case eCSSProperty_margin_top: + case eCSSProperty__moz_compat_floater_margin: return ParseVariant(aErrorCode, aValue, VARIANT_AHLP, nsnull); case eCSSProperty_marker_offset: return ParseVariant(aErrorCode, aValue, VARIANT_AHL, nsnull); diff --git a/mozilla/layout/html/style/src/nsCSSPropList.h b/mozilla/layout/html/style/src/nsCSSPropList.h index a81cbf8b21a..ad6ebfb3c12 100644 --- a/mozilla/layout/html/style/src/nsCSSPropList.h +++ b/mozilla/layout/html/style/src/nsCSSPropList.h @@ -39,6 +39,7 @@ CSS_PROP(_moz_border_radius, VISUAL) +CSS_PROP(_moz_compat_floater_margin, REFLOW) CSS_PROP(azimuth, AURAL) CSS_PROP(background, VISUAL) CSS_PROP(background_attachment, VISUAL) diff --git a/mozilla/layout/html/style/src/nsCSSStyleRule.cpp b/mozilla/layout/html/style/src/nsCSSStyleRule.cpp index 0326b33e93e..f54b5203111 100644 --- a/mozilla/layout/html/style/src/nsCSSStyleRule.cpp +++ b/mozilla/layout/html/style/src/nsCSSStyleRule.cpp @@ -1964,6 +1964,11 @@ MapDeclarationMarginInto(nsICSSDeclaration* aDeclaration, SETCOORD_LPH, aFont->mFont, aPresContext)) { } + // -moz-compat-floater-margin: length, percent, auto, inherit + if (! SetCoord(ourMargin->mCompatFloaterMargin, spacing->mCompatFloaterMargin, parentSpacing->mCompatFloaterMargin, + SETCOORD_LPAH, aFont->mFont, aPresContext)) { + } + // outline-width: length, enum, inherit if (! SetCoord(ourMargin->mOutlineWidth, spacing->mOutlineWidth, parentSpacing->mOutlineWidth, SETCOORD_LEH, aFont->mFont, aPresContext)) { diff --git a/mozilla/layout/html/style/src/nsICSSDeclaration.h b/mozilla/layout/html/style/src/nsICSSDeclaration.h index 889d7f43c37..f59db9c0f48 100644 --- a/mozilla/layout/html/style/src/nsICSSDeclaration.h +++ b/mozilla/layout/html/style/src/nsICSSDeclaration.h @@ -212,6 +212,7 @@ struct nsCSSMargin : public nsCSSStruct { nsCSSRect* mBorderColor; nsCSSRect* mBorderStyle; nsCSSValue mBorderRadius; // (extension) + nsCSSValue mCompatFloaterMargin; // (extension) nsCSSValue mOutlineWidth; nsCSSValue mOutlineColor; nsCSSValue mOutlineStyle; diff --git a/mozilla/layout/style/nsCSSDeclaration.cpp b/mozilla/layout/style/nsCSSDeclaration.cpp index 739232df96a..4f81bdb35fa 100644 --- a/mozilla/layout/style/nsCSSDeclaration.cpp +++ b/mozilla/layout/style/nsCSSDeclaration.cpp @@ -378,6 +378,7 @@ nsCSSMargin::nsCSSMargin(const nsCSSMargin& aCopy) : mMargin(nsnull), mPadding(nsnull), mBorderWidth(nsnull), mBorderColor(nsnull), mBorderStyle(nsnull), mBorderRadius(aCopy.mBorderRadius), + mCompatFloaterMargin(aCopy.mCompatFloaterMargin), mOutlineWidth(aCopy.mOutlineWidth), mOutlineColor(aCopy.mOutlineColor), mOutlineStyle(aCopy.mOutlineStyle), @@ -444,6 +445,7 @@ void nsCSSMargin::List(FILE* out, PRInt32 aIndent) const nsAutoString buffer; mBorderRadius.AppendToString(buffer, eCSSProperty__moz_border_radius); + mCompatFloaterMargin.AppendToString(buffer, eCSSProperty__moz_compat_floater_margin); mOutlineWidth.AppendToString(buffer, eCSSProperty_outline_width); mOutlineColor.AppendToString(buffer, eCSSProperty_outline_color); mOutlineStyle.AppendToString(buffer, eCSSProperty_outline_style); @@ -1359,6 +1361,7 @@ CSSDeclarationImpl::AppendValue(nsCSSProperty aProperty, const nsCSSValue& aValu break; case eCSSProperty__moz_border_radius: + case eCSSProperty__moz_compat_floater_margin: case eCSSProperty_outline_width: case eCSSProperty_outline_color: case eCSSProperty_outline_style: @@ -1366,6 +1369,7 @@ CSSDeclarationImpl::AppendValue(nsCSSProperty aProperty, const nsCSSValue& aValu CSS_ENSURE(Margin) { switch (aProperty) { case eCSSProperty__moz_border_radius: mMargin->mBorderRadius = aValue; break; + case eCSSProperty__moz_compat_floater_margin: mMargin->mCompatFloaterMargin = aValue; break; case eCSSProperty_outline_width: mMargin->mOutlineWidth = aValue; break; case eCSSProperty_outline_color: mMargin->mOutlineColor = aValue; break; case eCSSProperty_outline_style: mMargin->mOutlineStyle = aValue; break; @@ -2012,6 +2016,7 @@ CSSDeclarationImpl::SetValueImportant(nsCSSProperty aProperty) break; case eCSSProperty__moz_border_radius: + case eCSSProperty__moz_compat_floater_margin: case eCSSProperty_outline_width: case eCSSProperty_outline_color: case eCSSProperty_outline_style: @@ -2020,6 +2025,7 @@ CSSDeclarationImpl::SetValueImportant(nsCSSProperty aProperty) CSS_ENSURE_IMPORTANT(Margin) { switch (aProperty) { CSS_CASE_IMPORTANT(eCSSProperty__moz_border_radius, mMargin->mBorderRadius); + CSS_CASE_IMPORTANT(eCSSProperty__moz_compat_floater_margin, mMargin->mCompatFloaterMargin); CSS_CASE_IMPORTANT(eCSSProperty_outline_width, mMargin->mOutlineWidth); CSS_CASE_IMPORTANT(eCSSProperty_outline_color, mMargin->mOutlineColor); CSS_CASE_IMPORTANT(eCSSProperty_outline_style, mMargin->mOutlineStyle); @@ -2688,6 +2694,7 @@ CSSDeclarationImpl::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue) break; case eCSSProperty__moz_border_radius: + case eCSSProperty__moz_compat_floater_margin: case eCSSProperty_outline_width: case eCSSProperty_outline_color: case eCSSProperty_outline_style: @@ -2695,6 +2702,7 @@ CSSDeclarationImpl::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue) if (nsnull != mMargin) { switch (aProperty) { case eCSSProperty__moz_border_radius: aValue = mMargin->mBorderRadius; break; + case eCSSProperty__moz_compat_floater_margin: aValue = mMargin->mCompatFloaterMargin; break; case eCSSProperty_outline_width: aValue = mMargin->mOutlineWidth; break; case eCSSProperty_outline_color: aValue = mMargin->mOutlineColor; break; case eCSSProperty_outline_style: aValue = mMargin->mOutlineStyle; break; diff --git a/mozilla/layout/style/nsCSSKeywordList.h b/mozilla/layout/style/nsCSSKeywordList.h index 822307209ba..cff40f74a30 100644 --- a/mozilla/layout/style/nsCSSKeywordList.h +++ b/mozilla/layout/style/nsCSSKeywordList.h @@ -37,9 +37,9 @@ CSS_KEY(_moz_bg_inset) CSS_KEY(_moz_bg_outset) -CSS_KEY(_moz_pre_wrap) CSS_KEY(_moz_center) CSS_KEY(_moz_right) +CSS_KEY(_moz_pre_wrap) CSS_KEY(above) CSS_KEY(absolute) CSS_KEY(activeborder) diff --git a/mozilla/layout/style/nsCSSParser.cpp b/mozilla/layout/style/nsCSSParser.cpp index ad2f1304536..e81b9496071 100644 --- a/mozilla/layout/style/nsCSSParser.cpp +++ b/mozilla/layout/style/nsCSSParser.cpp @@ -2892,6 +2892,7 @@ PRBool CSSParserImpl::ParseSingleValueProperty(PRInt32& aErrorCode, case eCSSProperty_margin_left: case eCSSProperty_margin_right: case eCSSProperty_margin_top: + case eCSSProperty__moz_compat_floater_margin: return ParseVariant(aErrorCode, aValue, VARIANT_AHLP, nsnull); case eCSSProperty_marker_offset: return ParseVariant(aErrorCode, aValue, VARIANT_AHL, nsnull); diff --git a/mozilla/layout/style/nsCSSPropList.h b/mozilla/layout/style/nsCSSPropList.h index a81cbf8b21a..ad6ebfb3c12 100644 --- a/mozilla/layout/style/nsCSSPropList.h +++ b/mozilla/layout/style/nsCSSPropList.h @@ -39,6 +39,7 @@ CSS_PROP(_moz_border_radius, VISUAL) +CSS_PROP(_moz_compat_floater_margin, REFLOW) CSS_PROP(azimuth, AURAL) CSS_PROP(background, VISUAL) CSS_PROP(background_attachment, VISUAL) diff --git a/mozilla/layout/style/nsCSSStruct.cpp b/mozilla/layout/style/nsCSSStruct.cpp index 739232df96a..4f81bdb35fa 100644 --- a/mozilla/layout/style/nsCSSStruct.cpp +++ b/mozilla/layout/style/nsCSSStruct.cpp @@ -378,6 +378,7 @@ nsCSSMargin::nsCSSMargin(const nsCSSMargin& aCopy) : mMargin(nsnull), mPadding(nsnull), mBorderWidth(nsnull), mBorderColor(nsnull), mBorderStyle(nsnull), mBorderRadius(aCopy.mBorderRadius), + mCompatFloaterMargin(aCopy.mCompatFloaterMargin), mOutlineWidth(aCopy.mOutlineWidth), mOutlineColor(aCopy.mOutlineColor), mOutlineStyle(aCopy.mOutlineStyle), @@ -444,6 +445,7 @@ void nsCSSMargin::List(FILE* out, PRInt32 aIndent) const nsAutoString buffer; mBorderRadius.AppendToString(buffer, eCSSProperty__moz_border_radius); + mCompatFloaterMargin.AppendToString(buffer, eCSSProperty__moz_compat_floater_margin); mOutlineWidth.AppendToString(buffer, eCSSProperty_outline_width); mOutlineColor.AppendToString(buffer, eCSSProperty_outline_color); mOutlineStyle.AppendToString(buffer, eCSSProperty_outline_style); @@ -1359,6 +1361,7 @@ CSSDeclarationImpl::AppendValue(nsCSSProperty aProperty, const nsCSSValue& aValu break; case eCSSProperty__moz_border_radius: + case eCSSProperty__moz_compat_floater_margin: case eCSSProperty_outline_width: case eCSSProperty_outline_color: case eCSSProperty_outline_style: @@ -1366,6 +1369,7 @@ CSSDeclarationImpl::AppendValue(nsCSSProperty aProperty, const nsCSSValue& aValu CSS_ENSURE(Margin) { switch (aProperty) { case eCSSProperty__moz_border_radius: mMargin->mBorderRadius = aValue; break; + case eCSSProperty__moz_compat_floater_margin: mMargin->mCompatFloaterMargin = aValue; break; case eCSSProperty_outline_width: mMargin->mOutlineWidth = aValue; break; case eCSSProperty_outline_color: mMargin->mOutlineColor = aValue; break; case eCSSProperty_outline_style: mMargin->mOutlineStyle = aValue; break; @@ -2012,6 +2016,7 @@ CSSDeclarationImpl::SetValueImportant(nsCSSProperty aProperty) break; case eCSSProperty__moz_border_radius: + case eCSSProperty__moz_compat_floater_margin: case eCSSProperty_outline_width: case eCSSProperty_outline_color: case eCSSProperty_outline_style: @@ -2020,6 +2025,7 @@ CSSDeclarationImpl::SetValueImportant(nsCSSProperty aProperty) CSS_ENSURE_IMPORTANT(Margin) { switch (aProperty) { CSS_CASE_IMPORTANT(eCSSProperty__moz_border_radius, mMargin->mBorderRadius); + CSS_CASE_IMPORTANT(eCSSProperty__moz_compat_floater_margin, mMargin->mCompatFloaterMargin); CSS_CASE_IMPORTANT(eCSSProperty_outline_width, mMargin->mOutlineWidth); CSS_CASE_IMPORTANT(eCSSProperty_outline_color, mMargin->mOutlineColor); CSS_CASE_IMPORTANT(eCSSProperty_outline_style, mMargin->mOutlineStyle); @@ -2688,6 +2694,7 @@ CSSDeclarationImpl::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue) break; case eCSSProperty__moz_border_radius: + case eCSSProperty__moz_compat_floater_margin: case eCSSProperty_outline_width: case eCSSProperty_outline_color: case eCSSProperty_outline_style: @@ -2695,6 +2702,7 @@ CSSDeclarationImpl::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue) if (nsnull != mMargin) { switch (aProperty) { case eCSSProperty__moz_border_radius: aValue = mMargin->mBorderRadius; break; + case eCSSProperty__moz_compat_floater_margin: aValue = mMargin->mCompatFloaterMargin; break; case eCSSProperty_outline_width: aValue = mMargin->mOutlineWidth; break; case eCSSProperty_outline_color: aValue = mMargin->mOutlineColor; break; case eCSSProperty_outline_style: aValue = mMargin->mOutlineStyle; break; diff --git a/mozilla/layout/style/nsCSSStyleRule.cpp b/mozilla/layout/style/nsCSSStyleRule.cpp index 0326b33e93e..f54b5203111 100644 --- a/mozilla/layout/style/nsCSSStyleRule.cpp +++ b/mozilla/layout/style/nsCSSStyleRule.cpp @@ -1964,6 +1964,11 @@ MapDeclarationMarginInto(nsICSSDeclaration* aDeclaration, SETCOORD_LPH, aFont->mFont, aPresContext)) { } + // -moz-compat-floater-margin: length, percent, auto, inherit + if (! SetCoord(ourMargin->mCompatFloaterMargin, spacing->mCompatFloaterMargin, parentSpacing->mCompatFloaterMargin, + SETCOORD_LPAH, aFont->mFont, aPresContext)) { + } + // outline-width: length, enum, inherit if (! SetCoord(ourMargin->mOutlineWidth, spacing->mOutlineWidth, parentSpacing->mOutlineWidth, SETCOORD_LEH, aFont->mFont, aPresContext)) { diff --git a/mozilla/layout/style/nsStyleContext.cpp b/mozilla/layout/style/nsStyleContext.cpp index fb9cfe46c9a..95ec8a8cd8a 100644 --- a/mozilla/layout/style/nsStyleContext.cpp +++ b/mozilla/layout/style/nsStyleContext.cpp @@ -490,7 +490,6 @@ void StyleSpacingImpl::ResetFrom(const nsStyleSpacing* aParent, nsIPresContext* mBorder.SetTop(medium); mBorder.SetRight(medium); mBorder.SetBottom(medium); - mBorderStyle[0] = NS_STYLE_BORDER_STYLE_NONE; mBorderStyle[1] = NS_STYLE_BORDER_STYLE_NONE; @@ -509,6 +508,8 @@ void StyleSpacingImpl::ResetFrom(const nsStyleSpacing* aParent, nsIPresContext* mOutlineStyle = NS_STYLE_BORDER_STYLE_NONE; mOutlineColor = NS_RGB(0, 0, 0); + mCompatFloaterMargin.SetAutoValue(); // not inherited + mFloatEdge = NS_STYLE_FLOAT_EDGE_CONTENT; mHasCachedMargin = PR_FALSE; @@ -671,7 +672,8 @@ PRInt32 StyleSpacingImpl::CalcDifference(const StyleSpacingImpl& aOther) const if ((mMargin == aOther.mMargin) && (mPadding == aOther.mPadding) && (mBorder == aOther.mBorder) && - (mFloatEdge == aOther.mFloatEdge)) { + (mFloatEdge == aOther.mFloatEdge) && + (mCompatFloaterMargin == aOther.mCompatFloaterMargin)) { PRInt32 ix; for (ix = 0; ix < 4; ix++) { if ((mBorderStyle[ix] != aOther.mBorderStyle[ix]) ||