Bug 298378. Make sure that a style-change reflow on a column set eventually reflows all the descendant frames, even if some of them don't get reflowed on the first pass. r+sr=dbaron,a=asa

This commit is contained in:
roc+%cs.cmu.edu 2005-06-26 22:15:08 +00:00
Родитель 57b6cbf535
Коммит 9749d198a9
1 изменённых файлов: 13 добавлений и 2 удалений

Просмотреть файл

@ -677,7 +677,6 @@ nsColumnSetFrame::DrainOverflowColumns()
}
}
NS_IMETHODIMP
nsColumnSetFrame::Reflow(nsPresContext* aPresContext,
nsHTMLReflowMetrics& aDesiredSize,
@ -738,6 +737,18 @@ nsColumnSetFrame::Reflow(nsPresContext* aPresContext,
aStatus, config, unboundedLastColumn);
if (isBalancing) {
if (feasible ||
// All children were reflowed as necessary, so we can go ahead
// and do resize reflows from now on
kidReason != eReflowReason_StyleChange) {
// Any non-stylechange reflow can be followed by resize
// reflows. But a stylechange reflow demands that all children
// be reflowed, which may not have happened yet; some of them
// might just have been pushed to an overflow list. So we have to
// keep doing stylechange reflows.
kidReason = eReflowReason_Resize;
}
nscoord availableContentHeight = GetAvailableContentHeight(aReflowState);
// Termination of the algorithm below is guaranteed because
@ -834,7 +845,7 @@ nsColumnSetFrame::Reflow(nsPresContext* aPresContext,
unboundedLastColumn = PR_FALSE;
feasible = ReflowChildren(aDesiredSize, aReflowState,
eReflowReason_Resize, aStatus, config, PR_FALSE);
kidReason, aStatus, config, PR_FALSE);
}
if (!feasible) {