Bug 180931. If we move a frame temporarily during reflow, we'd better invalidate the whole overflow area because invalidates may have been issued at the temporary position.

git-svn-id: svn://10.0.0.236/trunk@153080 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
roc+%cs.cmu.edu
2004-02-22 03:31:30 +00:00
parent dbe6162d4d
commit 1b122ed826
9 changed files with 76 additions and 82 deletions

View File

@@ -1036,11 +1036,20 @@ nsContainerFrame::FinishReflowChild(nsIFrame* aKidFrame,
&aDesiredSize.mOverflowArea,
aFlags);
}
else if (0 == (aFlags & NS_FRAME_NO_MOVE_VIEW) &&
((curOrigin.x != aX) || (curOrigin.y != aY))) {
// If the frame has moved, then we need to make sure any child views are
// correctly positioned
PositionChildViews(aPresContext, aKidFrame);
if (!(aFlags & NS_FRAME_NO_MOVE_VIEW) &&
(curOrigin.x != aX || curOrigin.y != aY)) {
if (!aKidFrame->HasView()) {
// If the frame has moved, then we need to make sure any child views are
// correctly positioned
PositionChildViews(aPresContext, aKidFrame);
}
// We also need to redraw the frame because if the frame's Reflow issued any
// invalidates, then they will be at the wrong offset ... note that this includes
// invalidates issued against the frame's children, so we need to invalidate
// the overflow area too.
aKidFrame->Invalidate(aDesiredSize.mOverflowArea);
}
return aKidFrame->DidReflow(aPresContext, aReflowState, NS_FRAME_REFLOW_FINISHED);