diff --git a/mozilla/layout/html/base/src/nsColumnFrame.cpp b/mozilla/layout/html/base/src/nsColumnFrame.cpp
index f914fa5038a..c72eb37bf40 100644
--- a/mozilla/layout/html/base/src/nsColumnFrame.cpp
+++ b/mozilla/layout/html/base/src/nsColumnFrame.cpp
@@ -304,8 +304,6 @@ PRBool ColumnFrame::ReflowMappedChildren(nsIPresContext* aPresContext,
// Special handling for incomplete children
if (frNotComplete == status) {
- // XXX It's good to assume that we might still have room
- // even if the child didn't complete (floaters will want this)
nsIFrame* kidNextInFlow;
kidFrame->GetNextInFlow(kidNextInFlow);
@@ -826,9 +824,6 @@ ColumnFrame::ReflowUnmappedChildren(nsIPresContext* aPresContext,
if (nsnull != pseudoFrame) {
pseudoFrame = (nsBlockFrame*) kidFrame;
}
-
- // XXX We probably shouldn't assume that there is no room for
- // the continuation
}
} while (frNotComplete == status);
NS_RELEASE(kidStyleContext);
@@ -1110,12 +1105,23 @@ NS_METHOD ColumnFrame::IncrementalReflow(nsIPresContext* aPresContext,
}
NS_RELEASE(kidSC);
- // XXX Was it complete?
+ // Is the child complete?
if (frNotComplete == aStatus) {
- // XXX Need to push remaining frames and trigger a reflow there
- NS_ABORT();
+ // No. Create a continuing frame
+ nsIFrame* continuingFrame;
+
+ kidFrame->CreateContinuingFrame(aPresContext, this, continuingFrame);
+
+ // Insert the frame. We'll reflow it next pass through the loop
+ nsIFrame* nextSibling;
+
+ kidFrame->GetNextSibling(nextSibling);
+ continuingFrame->SetNextSibling(nextSibling);
+ kidFrame->SetNextSibling(continuingFrame);
+ mChildCount++;
}
+ // Get the next child frame
prevKidFrame = kidFrame;
kidFrame->GetNextSibling(kidFrame);
}