Bug 492080. More correct marking of dirty bits on floats when we interrupt. r+sr=dbaron

This commit is contained in:
Boris Zbarsky 2009-05-09 22:51:34 -05:00
parent 1c6412faca
commit 3202c50376

View File

@ -2286,9 +2286,11 @@ nsBlockFrame::MarkLineDirtyForInterrupt(nsLineBox* aLine)
for (nsIFrame* f = aLine->mFirstChild; n > 0;
f = f->GetNextSibling(), --n) {
f->AddStateBits(NS_FRAME_IS_DIRTY);
nsIFrame* oof = nsPlaceholderFrame::GetRealFrameFor(f);
if (oof != f && oof->GetParent() == this) {
oof->AddStateBits(NS_FRAME_IS_DIRTY);
}
// And mark all the floats whose reflows we might be skipping dirty too.
if (aLine->HasFloats()) {
for (nsFloatCache* fc = aLine->GetFirstFloat(); fc; fc = fc->Next()) {
fc->mPlaceholder->GetOutOfFlowFrame()->AddStateBits(NS_FRAME_IS_DIRTY);
}
}
} else {