Bug 223737. Lines that were pushed below a float should be treated as impacted by the float. r+sr=dbaron,a=bsmedberg

This commit is contained in:
roc+%cs.cmu.edu 2005-07-26 21:33:28 +00:00
parent 012e2013a8
commit 6d8ca6441e

View File

@ -3667,6 +3667,7 @@ nsBlockFrame::ReflowInlineFrames(nsBlockReflowState& aState,
PRInt32 spins = 0;
#endif
PRUint8 lineReflowStatus = LINE_REFLOW_REDO;
PRBool didRedo = PR_FALSE;
do {
// Once upon a time we allocated the first 30 nsLineLayout objects
// on the stack, and then we switched to the heap. At that time
@ -3685,6 +3686,10 @@ nsBlockFrame::ReflowInlineFrames(nsBlockReflowState& aState,
aKeepReflowGoing, &lineReflowStatus,
aUpdateMaximumWidth, aDamageDirtyArea);
lineLayout.EndLineReflow();
if (LINE_REFLOW_REDO == lineReflowStatus) {
didRedo = PR_TRUE;
}
#ifdef DEBUG
spins++;
@ -3697,6 +3702,12 @@ nsBlockFrame::ReflowInlineFrames(nsBlockReflowState& aState,
} while (NS_SUCCEEDED(rv) && LINE_REFLOW_REDO == lineReflowStatus);
// If we did at least one REDO, then the line did not fit next to some float.
// Mark it as impacted by a float, even if it no longer is next to a float.
if (didRedo) {
aLine->SetLineIsImpactedByFloat(PR_TRUE);
}
return rv;
}