author | Robert O'Callahan <robert@ocallahan.org> |
Wed, 19 May 2010 15:04:33 +1200 | |
changeset 42437 | a55765a1c2f576b5c73f8cd25b88d3a717419e76 |
parent 42436 | eaea9e3806a3f428ce8c687eb1ef1ad6cd299ffb |
child 42438 | e530c2b50c0a9588233dadb85278cad49cf1e100 |
push id | 13342 |
push user | rocallahan@mozilla.com |
push date | Wed, 19 May 2010 03:06:53 +0000 |
treeherder | mozilla-central@f2c78e370b43 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | dbaron |
bugs | 559241 |
milestone | 1.9.3a5pre |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
|
layout/generic/nsColumnSetFrame.cpp | file | annotate | diff | comparison | revisions | |
layout/generic/nsContainerFrame.cpp | file | annotate | diff | comparison | revisions |
--- a/layout/generic/nsColumnSetFrame.cpp +++ b/layout/generic/nsColumnSetFrame.cpp @@ -1066,17 +1066,17 @@ nsColumnSetFrame::Reflow(nsPresContext* CheckInvalidateSizeChange(aDesiredSize); FinishAndStoreOverflow(&aDesiredSize); aDesiredSize.mCarriedOutBottomMargin = carriedOutBottomMargin; NS_FRAME_SET_TRUNCATION(aStatus, aReflowState, aDesiredSize); - NS_ASSERTION(NS_FRAME_IS_COMPLETE(aStatus) || + NS_ASSERTION(NS_FRAME_IS_FULLY_COMPLETE(aStatus) || aReflowState.availableHeight != NS_UNCONSTRAINEDSIZE, "Column set should be complete if the available height is unconstrained"); return NS_OK; } NS_IMETHODIMP nsColumnSetFrame::BuildDisplayList(nsDisplayListBuilder* aBuilder,
--- a/layout/generic/nsContainerFrame.cpp +++ b/layout/generic/nsContainerFrame.cpp @@ -894,24 +894,28 @@ nsContainerFrame::ReflowOverflowContaine } } } if (!overflowContainers) return NS_OK; // nothing to reflow nsOverflowContinuationTracker tracker(aPresContext, this, PR_FALSE, PR_FALSE); + PRBool shouldReflowAllKids = aReflowState.ShouldReflowAllKids(); + for (nsIFrame* frame = overflowContainers->FirstChild(); frame; frame = frame->GetNextSibling()) { if (frame->GetPrevInFlow()->GetParent() != GetPrevInFlow()) { // frame's prevInFlow has moved, skip reflowing this frame; // it will get reflowed once it's been placed continue; } - if (NS_SUBTREE_DIRTY(frame)) { + // If the available vertical height has changed, we need to reflow + // even if the frame isn't dirty. + if (shouldReflowAllKids || NS_SUBTREE_DIRTY(frame)) { // Get prev-in-flow nsIFrame* prevInFlow = frame->GetPrevInFlow(); NS_ASSERTION(prevInFlow, "overflow container frame must have a prev-in-flow"); NS_ASSERTION(frame->GetStateBits() & NS_FRAME_IS_OVERFLOW_CONTAINER, "overflow container frame must have overflow container bit set"); nsRect prevRect = prevInFlow->GetRect();