Share IsPaddingZero between nsBlockFrame and nsInlineFrame by putting it in nsLayoutUtils. (Bug 585715) r=bzbarsky a2.0=blocking:beta6+

This commit is contained in:
L. David Baron 2010-08-31 12:05:12 -04:00
Родитель 374fca8e4f
Коммит 73db7cd5c4
3 изменённых файлов: 17 добавлений и 29 удалений

Просмотреть файл

@ -798,6 +798,17 @@ public:
(aCBHeight == NS_AUTOHEIGHT && aCoord.HasPercent());
}
static PRBool IsPaddingZero(const nsStyleCoord &aCoord)
{
return (aCoord.GetUnit() == eStyleUnit_Coord &&
aCoord.GetCoordValue() == 0) ||
(aCoord.GetUnit() == eStyleUnit_Percent &&
aCoord.GetPercentValue() == 0.0) ||
(aCoord.IsCalcUnit() &&
nsRuleNode::ComputeCoordPercentCalc(aCoord, nscoord_MAX) == 0 &&
nsRuleNode::ComputeCoordPercentCalc(aCoord, 0) == 0);
}
/*
* Calculate the used values for 'width' and 'height' for a replaced element.
*

Просмотреть файл

@ -2753,18 +2753,6 @@ nsBlockFrame::AttributeChanged(PRInt32 aNameSpaceID,
return rv;
}
static inline PRBool
IsPaddingZero(const nsStyleCoord &aCoord)
{
return (aCoord.GetUnit() == eStyleUnit_Coord &&
aCoord.GetCoordValue() == 0) ||
(aCoord.GetUnit() == eStyleUnit_Percent &&
aCoord.GetPercentValue() == 0.0) ||
(aCoord.IsCalcUnit() &&
nsRuleNode::ComputeCoordPercentCalc(aCoord, nscoord_MAX) == 0 &&
nsRuleNode::ComputeCoordPercentCalc(aCoord, 0) == 0);
}
static inline PRBool
IsNonAutoNonZeroHeight(const nsStyleCoord& aCoord)
{
@ -2801,8 +2789,8 @@ nsBlockFrame::IsSelfEmpty()
const nsStylePadding* padding = GetStylePadding();
if (border->GetActualBorderWidth(NS_SIDE_TOP) != 0 ||
border->GetActualBorderWidth(NS_SIDE_BOTTOM) != 0 ||
!IsPaddingZero(padding->mPadding.GetTop()) ||
!IsPaddingZero(padding->mPadding.GetBottom())) {
!nsLayoutUtils::IsPaddingZero(padding->mPadding.GetTop()) ||
!nsLayoutUtils::IsPaddingZero(padding->mPadding.GetBottom())) {
return PR_FALSE;
}

Просмотреть файл

@ -93,22 +93,11 @@ nsInlineFrame::GetType() const
return nsGkAtoms::inlineFrame;
}
static inline PRBool
IsPaddingZero(const nsStyleCoord &aCoord)
{
return (aCoord.GetUnit() == eStyleUnit_Coord &&
aCoord.GetCoordValue() == 0) ||
(aCoord.GetUnit() == eStyleUnit_Percent &&
aCoord.GetPercentValue() == 0.0) ||
(aCoord.IsCalcUnit() &&
nsRuleNode::ComputeCoordPercentCalc(aCoord, nscoord_MAX) == 0 &&
nsRuleNode::ComputeCoordPercentCalc(aCoord, 0) == 0);
}
static inline PRBool
IsMarginZero(const nsStyleCoord &aCoord)
{
return aCoord.GetUnit() == eStyleUnit_Auto || IsPaddingZero(aCoord);
return aCoord.GetUnit() == eStyleUnit_Auto ||
nsLayoutUtils::IsPaddingZero(aCoord);
}
/* virtual */ PRBool
@ -129,11 +118,11 @@ nsInlineFrame::IsSelfEmpty()
// ZeroEffectiveSpanBox, anymore, so what should this really be?
PRBool haveRight =
border->GetActualBorderWidth(NS_SIDE_RIGHT) != 0 ||
!IsPaddingZero(padding->mPadding.GetRight()) ||
!nsLayoutUtils::IsPaddingZero(padding->mPadding.GetRight()) ||
!IsMarginZero(margin->mMargin.GetRight());
PRBool haveLeft =
border->GetActualBorderWidth(NS_SIDE_LEFT) != 0 ||
!IsPaddingZero(padding->mPadding.GetLeft()) ||
!nsLayoutUtils::IsPaddingZero(padding->mPadding.GetLeft()) ||
!IsMarginZero(margin->mMargin.GetLeft());
if (haveLeft || haveRight) {
if (GetStateBits() & NS_FRAME_IS_SPECIAL) {