зеркало из https://github.com/mozilla/pjs.git
14448 'border' property not resetting 'border-color' to initial value. tested=dbaron/hixie
This commit is contained in:
Родитель
6371fbf24f
Коммит
ed7431771d
|
@ -3953,8 +3953,8 @@ PRBool CSSParserImpl::ParseBorder(PRInt32& aErrorCode, nsICSSDeclaration* aDecla
|
|||
values[1].SetNoneValue();
|
||||
}
|
||||
|
||||
if (0 == (found & 4)) { // clear missing color values so color property will be used
|
||||
values[2].Reset();
|
||||
if (0 == (found & 4)) { // text color will be used
|
||||
values[2].SetIntValue(NS_STYLE_COLOR_MOZ_USE_TEXT_COLOR, eCSSUnit_Enumerated);
|
||||
}
|
||||
|
||||
PRInt32 index;
|
||||
|
|
|
@ -2662,7 +2662,7 @@ MapDeclarationMarginInto(nsICSSDeclaration* aDeclaration,
|
|||
nsCSSRect* ourBorderColor = ourMargin->mBorderColor;
|
||||
nscolor borderColor;
|
||||
nscolor unused = NS_RGB(0,0,0);
|
||||
|
||||
// top
|
||||
if (eCSSUnit_Inherit == ourBorderColor->mTop.GetUnit()) {
|
||||
if (parentBorder->GetBorderColor(NS_SIDE_TOP, borderColor)) {
|
||||
border->SetBorderColor(NS_SIDE_TOP, borderColor);
|
||||
|
@ -2675,9 +2675,17 @@ MapDeclarationMarginInto(nsICSSDeclaration* aDeclaration,
|
|||
border->SetBorderColor(NS_SIDE_TOP, borderColor);
|
||||
}
|
||||
else if (eCSSUnit_Enumerated == ourBorderColor->mTop.GetUnit()) {
|
||||
border->SetBorderTransparent(NS_SIDE_TOP);
|
||||
switch (ourBorderColor->mTop.GetIntValue()) {
|
||||
case NS_STYLE_COLOR_TRANSPARENT:
|
||||
border->SetBorderTransparent(NS_SIDE_TOP);
|
||||
break;
|
||||
case NS_STYLE_COLOR_MOZ_USE_TEXT_COLOR:
|
||||
const nsStyleColor* ourColor = (const nsStyleColor*)aContext->GetStyleData(eStyleStruct_Color);
|
||||
border->SetBorderColor(NS_SIDE_TOP, ourColor->mColor);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// right
|
||||
if (eCSSUnit_Inherit == ourBorderColor->mRight.GetUnit()) {
|
||||
if (parentBorder->GetBorderColor(NS_SIDE_RIGHT, borderColor)) {
|
||||
border->SetBorderColor(NS_SIDE_RIGHT, borderColor);
|
||||
|
@ -2689,10 +2697,18 @@ MapDeclarationMarginInto(nsICSSDeclaration* aDeclaration,
|
|||
else if (SetColor(ourBorderColor->mRight, unused, aPresContext, borderColor)) {
|
||||
border->SetBorderColor(NS_SIDE_RIGHT, borderColor);
|
||||
}
|
||||
else if (eCSSUnit_Enumerated == ourBorderColor->mRight.GetUnit()) {
|
||||
border->SetBorderTransparent(NS_SIDE_RIGHT);
|
||||
else if (eCSSUnit_Enumerated == ourBorderColor->mTop.GetUnit()) {
|
||||
switch (ourBorderColor->mRight.GetIntValue()) {
|
||||
case NS_STYLE_COLOR_TRANSPARENT:
|
||||
border->SetBorderTransparent(NS_SIDE_RIGHT);
|
||||
break;
|
||||
case NS_STYLE_COLOR_MOZ_USE_TEXT_COLOR:
|
||||
const nsStyleColor* ourColor = (const nsStyleColor*)aContext->GetStyleData(eStyleStruct_Color);
|
||||
border->SetBorderColor(NS_SIDE_RIGHT, ourColor->mColor);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// bottom
|
||||
if (eCSSUnit_Inherit == ourBorderColor->mBottom.GetUnit()) {
|
||||
if (parentBorder->GetBorderColor(NS_SIDE_BOTTOM, borderColor)) {
|
||||
border->SetBorderColor(NS_SIDE_BOTTOM, borderColor);
|
||||
|
@ -2704,10 +2720,18 @@ MapDeclarationMarginInto(nsICSSDeclaration* aDeclaration,
|
|||
else if (SetColor(ourBorderColor->mBottom, unused, aPresContext, borderColor)) {
|
||||
border->SetBorderColor(NS_SIDE_BOTTOM, borderColor);
|
||||
}
|
||||
else if (eCSSUnit_Enumerated == ourBorderColor->mBottom.GetUnit()) {
|
||||
border->SetBorderTransparent(NS_SIDE_BOTTOM);
|
||||
else if (eCSSUnit_Enumerated == ourBorderColor->mTop.GetUnit()) {
|
||||
switch (ourBorderColor->mBottom.GetIntValue()) {
|
||||
case NS_STYLE_COLOR_TRANSPARENT:
|
||||
border->SetBorderTransparent(NS_SIDE_BOTTOM);
|
||||
break;
|
||||
case NS_STYLE_COLOR_MOZ_USE_TEXT_COLOR:
|
||||
const nsStyleColor* ourColor = (const nsStyleColor*)aContext->GetStyleData(eStyleStruct_Color);
|
||||
border->SetBorderColor(NS_SIDE_BOTTOM, ourColor->mColor);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// left
|
||||
if (eCSSUnit_Inherit == ourBorderColor->mLeft.GetUnit()) {
|
||||
if (parentBorder->GetBorderColor(NS_SIDE_LEFT, borderColor)) {
|
||||
border->SetBorderColor(NS_SIDE_LEFT, borderColor);
|
||||
|
@ -2719,8 +2743,16 @@ MapDeclarationMarginInto(nsICSSDeclaration* aDeclaration,
|
|||
else if (SetColor(ourBorderColor->mLeft, unused, aPresContext, borderColor)) {
|
||||
border->SetBorderColor(NS_SIDE_LEFT, borderColor);
|
||||
}
|
||||
else if (eCSSUnit_Enumerated == ourBorderColor->mLeft.GetUnit()) {
|
||||
border->SetBorderTransparent(NS_SIDE_LEFT);
|
||||
else if (eCSSUnit_Enumerated == ourBorderColor->mTop.GetUnit()) {
|
||||
switch (ourBorderColor->mLeft.GetIntValue()) {
|
||||
case NS_STYLE_COLOR_TRANSPARENT:
|
||||
border->SetBorderTransparent(NS_SIDE_LEFT);
|
||||
break;
|
||||
case NS_STYLE_COLOR_MOZ_USE_TEXT_COLOR:
|
||||
const nsStyleColor* ourColor = (const nsStyleColor*)aContext->GetStyleData(eStyleStruct_Color);
|
||||
border->SetBorderColor(NS_SIDE_LEFT, ourColor->mColor);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -72,6 +72,7 @@ CSS_KEY(-moz-pre-wrap, _moz_pre_wrap)
|
|||
CSS_KEY(-moz-scrollbars-none, _moz_scrollbars_none)
|
||||
CSS_KEY(-moz-scrollbars-horizontal, _moz_scrollbars_horizontal)
|
||||
CSS_KEY(-moz-scrollbars-vertical, _moz_scrollbars_vertical)
|
||||
CSS_KEY(-moz-use-text-color, _moz_use_text_color)
|
||||
CSS_KEY(-moz-xul-box, _moz_xul_box)
|
||||
CSS_KEY(-moz-xul-inline-box, _moz_xul_inline_box)
|
||||
CSS_KEY(-moz-xul-bulletinboard, _moz_xul_bulletinboard)
|
||||
|
|
|
@ -150,6 +150,7 @@ const PRInt32 nsCSSProps::kBorderCollapseKTable[] = {
|
|||
|
||||
const PRInt32 nsCSSProps::kBorderColorKTable[] = {
|
||||
eCSSKeyword_transparent, NS_STYLE_COLOR_TRANSPARENT,
|
||||
eCSSKeyword__moz_use_text_color, NS_STYLE_COLOR_MOZ_USE_TEXT_COLOR,
|
||||
-1,-1
|
||||
};
|
||||
|
||||
|
|
|
@ -72,6 +72,7 @@ CSS_KEY(-moz-pre-wrap, _moz_pre_wrap)
|
|||
CSS_KEY(-moz-scrollbars-none, _moz_scrollbars_none)
|
||||
CSS_KEY(-moz-scrollbars-horizontal, _moz_scrollbars_horizontal)
|
||||
CSS_KEY(-moz-scrollbars-vertical, _moz_scrollbars_vertical)
|
||||
CSS_KEY(-moz-use-text-color, _moz_use_text_color)
|
||||
CSS_KEY(-moz-xul-box, _moz_xul_box)
|
||||
CSS_KEY(-moz-xul-inline-box, _moz_xul_inline_box)
|
||||
CSS_KEY(-moz-xul-bulletinboard, _moz_xul_bulletinboard)
|
||||
|
|
|
@ -3953,8 +3953,8 @@ PRBool CSSParserImpl::ParseBorder(PRInt32& aErrorCode, nsICSSDeclaration* aDecla
|
|||
values[1].SetNoneValue();
|
||||
}
|
||||
|
||||
if (0 == (found & 4)) { // clear missing color values so color property will be used
|
||||
values[2].Reset();
|
||||
if (0 == (found & 4)) { // text color will be used
|
||||
values[2].SetIntValue(NS_STYLE_COLOR_MOZ_USE_TEXT_COLOR, eCSSUnit_Enumerated);
|
||||
}
|
||||
|
||||
PRInt32 index;
|
||||
|
|
|
@ -150,6 +150,7 @@ const PRInt32 nsCSSProps::kBorderCollapseKTable[] = {
|
|||
|
||||
const PRInt32 nsCSSProps::kBorderColorKTable[] = {
|
||||
eCSSKeyword_transparent, NS_STYLE_COLOR_TRANSPARENT,
|
||||
eCSSKeyword__moz_use_text_color, NS_STYLE_COLOR_MOZ_USE_TEXT_COLOR,
|
||||
-1,-1
|
||||
};
|
||||
|
||||
|
|
|
@ -2662,7 +2662,7 @@ MapDeclarationMarginInto(nsICSSDeclaration* aDeclaration,
|
|||
nsCSSRect* ourBorderColor = ourMargin->mBorderColor;
|
||||
nscolor borderColor;
|
||||
nscolor unused = NS_RGB(0,0,0);
|
||||
|
||||
// top
|
||||
if (eCSSUnit_Inherit == ourBorderColor->mTop.GetUnit()) {
|
||||
if (parentBorder->GetBorderColor(NS_SIDE_TOP, borderColor)) {
|
||||
border->SetBorderColor(NS_SIDE_TOP, borderColor);
|
||||
|
@ -2675,9 +2675,17 @@ MapDeclarationMarginInto(nsICSSDeclaration* aDeclaration,
|
|||
border->SetBorderColor(NS_SIDE_TOP, borderColor);
|
||||
}
|
||||
else if (eCSSUnit_Enumerated == ourBorderColor->mTop.GetUnit()) {
|
||||
border->SetBorderTransparent(NS_SIDE_TOP);
|
||||
switch (ourBorderColor->mTop.GetIntValue()) {
|
||||
case NS_STYLE_COLOR_TRANSPARENT:
|
||||
border->SetBorderTransparent(NS_SIDE_TOP);
|
||||
break;
|
||||
case NS_STYLE_COLOR_MOZ_USE_TEXT_COLOR:
|
||||
const nsStyleColor* ourColor = (const nsStyleColor*)aContext->GetStyleData(eStyleStruct_Color);
|
||||
border->SetBorderColor(NS_SIDE_TOP, ourColor->mColor);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// right
|
||||
if (eCSSUnit_Inherit == ourBorderColor->mRight.GetUnit()) {
|
||||
if (parentBorder->GetBorderColor(NS_SIDE_RIGHT, borderColor)) {
|
||||
border->SetBorderColor(NS_SIDE_RIGHT, borderColor);
|
||||
|
@ -2689,10 +2697,18 @@ MapDeclarationMarginInto(nsICSSDeclaration* aDeclaration,
|
|||
else if (SetColor(ourBorderColor->mRight, unused, aPresContext, borderColor)) {
|
||||
border->SetBorderColor(NS_SIDE_RIGHT, borderColor);
|
||||
}
|
||||
else if (eCSSUnit_Enumerated == ourBorderColor->mRight.GetUnit()) {
|
||||
border->SetBorderTransparent(NS_SIDE_RIGHT);
|
||||
else if (eCSSUnit_Enumerated == ourBorderColor->mTop.GetUnit()) {
|
||||
switch (ourBorderColor->mRight.GetIntValue()) {
|
||||
case NS_STYLE_COLOR_TRANSPARENT:
|
||||
border->SetBorderTransparent(NS_SIDE_RIGHT);
|
||||
break;
|
||||
case NS_STYLE_COLOR_MOZ_USE_TEXT_COLOR:
|
||||
const nsStyleColor* ourColor = (const nsStyleColor*)aContext->GetStyleData(eStyleStruct_Color);
|
||||
border->SetBorderColor(NS_SIDE_RIGHT, ourColor->mColor);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// bottom
|
||||
if (eCSSUnit_Inherit == ourBorderColor->mBottom.GetUnit()) {
|
||||
if (parentBorder->GetBorderColor(NS_SIDE_BOTTOM, borderColor)) {
|
||||
border->SetBorderColor(NS_SIDE_BOTTOM, borderColor);
|
||||
|
@ -2704,10 +2720,18 @@ MapDeclarationMarginInto(nsICSSDeclaration* aDeclaration,
|
|||
else if (SetColor(ourBorderColor->mBottom, unused, aPresContext, borderColor)) {
|
||||
border->SetBorderColor(NS_SIDE_BOTTOM, borderColor);
|
||||
}
|
||||
else if (eCSSUnit_Enumerated == ourBorderColor->mBottom.GetUnit()) {
|
||||
border->SetBorderTransparent(NS_SIDE_BOTTOM);
|
||||
else if (eCSSUnit_Enumerated == ourBorderColor->mTop.GetUnit()) {
|
||||
switch (ourBorderColor->mBottom.GetIntValue()) {
|
||||
case NS_STYLE_COLOR_TRANSPARENT:
|
||||
border->SetBorderTransparent(NS_SIDE_BOTTOM);
|
||||
break;
|
||||
case NS_STYLE_COLOR_MOZ_USE_TEXT_COLOR:
|
||||
const nsStyleColor* ourColor = (const nsStyleColor*)aContext->GetStyleData(eStyleStruct_Color);
|
||||
border->SetBorderColor(NS_SIDE_BOTTOM, ourColor->mColor);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// left
|
||||
if (eCSSUnit_Inherit == ourBorderColor->mLeft.GetUnit()) {
|
||||
if (parentBorder->GetBorderColor(NS_SIDE_LEFT, borderColor)) {
|
||||
border->SetBorderColor(NS_SIDE_LEFT, borderColor);
|
||||
|
@ -2719,8 +2743,16 @@ MapDeclarationMarginInto(nsICSSDeclaration* aDeclaration,
|
|||
else if (SetColor(ourBorderColor->mLeft, unused, aPresContext, borderColor)) {
|
||||
border->SetBorderColor(NS_SIDE_LEFT, borderColor);
|
||||
}
|
||||
else if (eCSSUnit_Enumerated == ourBorderColor->mLeft.GetUnit()) {
|
||||
border->SetBorderTransparent(NS_SIDE_LEFT);
|
||||
else if (eCSSUnit_Enumerated == ourBorderColor->mTop.GetUnit()) {
|
||||
switch (ourBorderColor->mLeft.GetIntValue()) {
|
||||
case NS_STYLE_COLOR_TRANSPARENT:
|
||||
border->SetBorderTransparent(NS_SIDE_LEFT);
|
||||
break;
|
||||
case NS_STYLE_COLOR_MOZ_USE_TEXT_COLOR:
|
||||
const nsStyleColor* ourColor = (const nsStyleColor*)aContext->GetStyleData(eStyleStruct_Color);
|
||||
border->SetBorderColor(NS_SIDE_LEFT, ourColor->mColor);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче