Correcting our background painting code per the latest CSS specs. By default, backgrounds should be painted to the border
area, and not the padding area as per the CSS 2 Errata, CSS2.1 and CSS3. Also, implementing the CSS3 'background-clip' and 'background-origin' properties (currently with -moz- prefixes) to control this behavior. Bug 162252, r=dbaron sr=roc+moz git-svn-id: svn://10.0.0.236/trunk@131419 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
@@ -166,7 +166,9 @@ nsCSSColor::nsCSSColor(const nsCSSColor& aCopy)
|
||||
mBackRepeat(aCopy.mBackRepeat),
|
||||
mBackAttachment(aCopy.mBackAttachment),
|
||||
mBackPositionX(aCopy.mBackPositionX),
|
||||
mBackPositionY(aCopy.mBackPositionY)
|
||||
mBackPositionY(aCopy.mBackPositionY),
|
||||
mBackClip(aCopy.mBackClip),
|
||||
mBackOrigin(aCopy.mBackOrigin)
|
||||
{
|
||||
MOZ_COUNT_CTOR(nsCSSColor);
|
||||
}
|
||||
@@ -195,6 +197,8 @@ void nsCSSColor::List(FILE* out, PRInt32 aIndent) const
|
||||
mBackAttachment.AppendToString(buffer, eCSSProperty_background_attachment);
|
||||
mBackPositionX.AppendToString(buffer, eCSSProperty_background_x_position);
|
||||
mBackPositionY.AppendToString(buffer, eCSSProperty_background_y_position);
|
||||
mBackClip.AppendToString(buffer, eCSSProperty__moz_background_clip);
|
||||
mBackOrigin.AppendToString(buffer, eCSSProperty__moz_background_origin);
|
||||
fputs(NS_LossyConvertUCS2toASCII(buffer).get(), out);
|
||||
}
|
||||
#endif
|
||||
@@ -1471,7 +1475,9 @@ nsCSSDeclaration::AppendValue(nsCSSProperty aProperty, const nsCSSValue& aValue)
|
||||
case eCSSProperty_background_repeat:
|
||||
case eCSSProperty_background_attachment:
|
||||
case eCSSProperty_background_x_position:
|
||||
case eCSSProperty_background_y_position: {
|
||||
case eCSSProperty_background_y_position:
|
||||
case eCSSProperty__moz_background_clip:
|
||||
case eCSSProperty__moz_background_origin: {
|
||||
CSS_ENSURE(Color) {
|
||||
switch (aProperty) {
|
||||
case eCSSProperty_color: theColor->mColor = aValue; break;
|
||||
@@ -1481,6 +1487,8 @@ nsCSSDeclaration::AppendValue(nsCSSProperty aProperty, const nsCSSValue& aValue)
|
||||
case eCSSProperty_background_attachment: theColor->mBackAttachment = aValue; break;
|
||||
case eCSSProperty_background_x_position: theColor->mBackPositionX = aValue; break;
|
||||
case eCSSProperty_background_y_position: theColor->mBackPositionY = aValue; break;
|
||||
case eCSSProperty__moz_background_clip: theColor->mBackClip = aValue; break;
|
||||
case eCSSProperty__moz_background_origin: theColor->mBackOrigin = aValue; break;
|
||||
CSS_BOGUS_DEFAULT; // make compiler happy
|
||||
}
|
||||
}
|
||||
@@ -2310,7 +2318,9 @@ nsCSSDeclaration::SetValueImportant(nsCSSProperty aProperty)
|
||||
case eCSSProperty_background_repeat:
|
||||
case eCSSProperty_background_attachment:
|
||||
case eCSSProperty_background_x_position:
|
||||
case eCSSProperty_background_y_position: {
|
||||
case eCSSProperty_background_y_position:
|
||||
case eCSSProperty__moz_background_clip:
|
||||
case eCSSProperty__moz_background_origin: {
|
||||
CSS_VARONSTACK_GET(Color);
|
||||
if (nsnull != theColor) {
|
||||
CSS_ENSURE_IMPORTANT(Color) {
|
||||
@@ -2322,6 +2332,8 @@ nsCSSDeclaration::SetValueImportant(nsCSSProperty aProperty)
|
||||
CSS_CASE_IMPORTANT(eCSSProperty_background_attachment, Color, mBackAttachment);
|
||||
CSS_CASE_IMPORTANT(eCSSProperty_background_x_position, Color, mBackPositionX);
|
||||
CSS_CASE_IMPORTANT(eCSSProperty_background_y_position, Color, mBackPositionY);
|
||||
CSS_CASE_IMPORTANT(eCSSProperty__moz_background_clip, Color, mBackClip);
|
||||
CSS_CASE_IMPORTANT(eCSSProperty__moz_background_origin, Color, mBackOrigin);
|
||||
CSS_BOGUS_DEFAULT; // make compiler happy
|
||||
}
|
||||
}
|
||||
@@ -3272,7 +3284,9 @@ nsCSSDeclaration::RemoveProperty(nsCSSProperty aProperty)
|
||||
case eCSSProperty_background_repeat:
|
||||
case eCSSProperty_background_attachment:
|
||||
case eCSSProperty_background_x_position:
|
||||
case eCSSProperty_background_y_position: {
|
||||
case eCSSProperty_background_y_position:
|
||||
case eCSSProperty__moz_background_clip:
|
||||
case eCSSProperty__moz_background_origin: {
|
||||
CSS_CHECK(Color) {
|
||||
switch (aProperty) {
|
||||
case eCSSProperty_color: theColor->mColor.Reset(); break;
|
||||
@@ -3282,6 +3296,8 @@ nsCSSDeclaration::RemoveProperty(nsCSSProperty aProperty)
|
||||
case eCSSProperty_background_attachment: theColor->mBackAttachment.Reset(); break;
|
||||
case eCSSProperty_background_x_position: theColor->mBackPositionX.Reset(); break;
|
||||
case eCSSProperty_background_y_position: theColor->mBackPositionY.Reset(); break;
|
||||
case eCSSProperty__moz_background_clip: theColor->mBackClip.Reset(); break;
|
||||
case eCSSProperty__moz_background_origin: theColor->mBackOrigin.Reset(); break;
|
||||
CSS_BOGUS_DEFAULT; // make compiler happy
|
||||
}
|
||||
}
|
||||
@@ -4100,7 +4116,9 @@ nsCSSDeclaration::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue)
|
||||
case eCSSProperty_background_repeat:
|
||||
case eCSSProperty_background_attachment:
|
||||
case eCSSProperty_background_x_position:
|
||||
case eCSSProperty_background_y_position: {
|
||||
case eCSSProperty_background_y_position:
|
||||
case eCSSProperty__moz_background_clip:
|
||||
case eCSSProperty__moz_background_origin: {
|
||||
CSS_VARONSTACK_GET(Color);
|
||||
if (nsnull != theColor) {
|
||||
switch (aProperty) {
|
||||
@@ -4111,6 +4129,8 @@ nsCSSDeclaration::GetValue(nsCSSProperty aProperty, nsCSSValue& aValue)
|
||||
case eCSSProperty_background_attachment: aValue = theColor->mBackAttachment; break;
|
||||
case eCSSProperty_background_x_position: aValue = theColor->mBackPositionX; break;
|
||||
case eCSSProperty_background_y_position: aValue = theColor->mBackPositionY; break;
|
||||
case eCSSProperty__moz_background_clip: aValue = theColor->mBackClip; break;
|
||||
case eCSSProperty__moz_background_origin: aValue = theColor->mBackOrigin; break;
|
||||
CSS_BOGUS_DEFAULT; // make compiler happy
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user