Bug 190735. nsIFrame deCOMtamination, r+rs=dbaron

git-svn-id: svn://10.0.0.236/trunk@145645 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
roc+%cs.cmu.edu
2003-08-06 03:07:12 +00:00
parent 8db3d16e6b
commit c0bc42c584
23 changed files with 361 additions and 757 deletions

View File

@@ -69,6 +69,7 @@ inline nscoord CalcSideFor(const nsIFrame* aFrame, const nsStyleCoord& aCoord,
const nscoord* aEnumTable, PRInt32 aNumEnums)
{
nscoord result = 0;
nsIFrame* parentFrame = aFrame->GetParent();
switch (aCoord.GetUnit()) {
case eStyleUnit_Auto:
@@ -76,9 +77,8 @@ inline nscoord CalcSideFor(const nsIFrame* aFrame, const nsStyleCoord& aCoord,
break;
case eStyleUnit_Inherit:
nsIFrame* parentFrame;
aFrame->GetParent(&parentFrame); // XXX may not be direct parent...
if (nsnull != parentFrame) {
// XXX may not be direct parent...
if (parentFrame) {
nsStyleContext* parentContext = parentFrame->GetStyleContext();
if (nsnull != parentContext) {
nsMargin parentSpacing;
@@ -119,14 +119,11 @@ inline nscoord CalcSideFor(const nsIFrame* aFrame, const nsStyleCoord& aCoord,
{
nscoord baseWidth = 0;
PRBool isBase = PR_FALSE;
nsIFrame* frame;
aFrame->GetParent(&frame);
while (nsnull != frame) {
nsIFrame* frame = aFrame->GetParent();
while (frame) {
frame->IsPercentageBase(isBase);
if (isBase) {
nsSize size;
frame->GetSize(size);
baseWidth = size.width;
baseWidth = frame->GetSize().width;
// subtract border of containing block
nsMargin border;
frame->GetStyleBorder()->CalcBorderFor(frame, border);
@@ -142,7 +139,7 @@ inline nscoord CalcSideFor(const nsIFrame* aFrame, const nsStyleCoord& aCoord,
}
break;
}
frame->GetParent(&frame);
frame = frame->GetParent();
}
result = (nscoord)((float)baseWidth * aCoord.GetPercentValue());
}