diff --git a/mozilla/layout/html/table/src/nsTableCellFrame.cpp b/mozilla/layout/html/table/src/nsTableCellFrame.cpp
index 29a4df94cd8..a5863ae20b0 100644
--- a/mozilla/layout/html/table/src/nsTableCellFrame.cpp
+++ b/mozilla/layout/html/table/src/nsTableCellFrame.cpp
@@ -77,7 +77,6 @@ nsTableCellFrame::Init(nsIPresContext& aPresContext, nsIFrame* aChildList)
{
// Create body pseudo frame
NS_NewBodyFrame(mContent, this, mFirstChild);
- mChildCount = 1;
// Resolve style and set the style context
nsIStyleContext* styleContext =
@@ -194,7 +193,6 @@ void nsTableCellFrame::CreatePsuedoFrame(nsIPresContext* aPresContext)
if (nsnull == mPrevInFlow) {
// No, create a body pseudo frame
NS_NewBodyFrame(mContent, this, mFirstChild);
- mChildCount = 1;
// Resolve style and set the style context
nsIStyleContext* styleContext =
@@ -212,7 +210,6 @@ void nsTableCellFrame::CreatePsuedoFrame(nsIPresContext* aPresContext)
prevPseudoFrame->GetStyleContext(aPresContext, kidSC);
prevPseudoFrame->CreateContinuingFrame(*aPresContext, this, kidSC, mFirstChild);
NS_RELEASE(kidSC);
- mChildCount = 1;
}
}
@@ -295,8 +292,6 @@ NS_METHOD nsTableCellFrame::Reflow(nsIPresContext& aPresContext,
printf("%p nsTableCellFrame::Reflow: maxSize=%d,%d\n",
this, aReflowState.maxSize.width, aReflowState.maxSize.height);
- mFirstContentOffset = mLastContentOffset = 0;
-
nsSize availSize(aReflowState.maxSize);
nsSize maxElementSize;
nsSize *pMaxElementSize = aDesiredSize.maxElementSize;
@@ -323,8 +318,6 @@ NS_METHOD nsTableCellFrame::Reflow(nsIPresContext& aPresContext,
nsTableFrame* tableFrame = GetTableFrame();
tableFrame->GetCellMarginData(this,margin);
- mLastContentIsComplete = PR_TRUE;
-
// get frame, creating one if needed
if (nsnull==mFirstChild)
{
@@ -378,10 +371,6 @@ NS_METHOD nsTableCellFrame::Reflow(nsIPresContext& aPresContext,
this, kidSize.width, kidSize.height);
}
- // Set our last content offset based on the pseudo-frame
- nsBodyFrame* bodyPseudoFrame = (nsBodyFrame*)mFirstChild;
- mLastContentOffset = bodyPseudoFrame->GetLastContentOffset();
-
// Place the child
//////////////////////////////// HACK //////////////////////////////
kidSize.width = PR_MIN(kidSize.width, availSize.width);
@@ -389,12 +378,6 @@ NS_METHOD nsTableCellFrame::Reflow(nsIPresContext& aPresContext,
mFirstChild->SetRect(nsRect(leftInset, topInset,
kidSize.width, kidSize.height));
- if (NS_FRAME_IS_NOT_COMPLETE(aStatus)) {
- // If the child didn't finish layout then it means that it used
- // up all of our available space (or needs us to split).
- mLastContentIsComplete = PR_FALSE;
- }
-
// Return our size and our result
// first, compute the height
@@ -1126,7 +1109,7 @@ NS_METHOD nsTableCellFrame::List(FILE* out, PRInt32 aIndent, nsIListFilter *aFil
fputs("\n", out);
}
// Output the children
- if (mChildCount > 0) {
+ if (nsnull != mFirstChild) {
if (PR_TRUE==outputMe)
{
if (0 != mState) {
@@ -1201,7 +1184,7 @@ void nsTableCellFrame::List(FILE* out, PRInt32 aIndent, nsIListFilter *aFilter)
}
// Output the children
- if (mChildCount > 0) {
+ if (nsnull != mFirstChild) {
if (PR_TRUE==outputMe)
{
if (0 != mState) {
diff --git a/mozilla/layout/html/table/src/nsTableColGroupFrame.cpp b/mozilla/layout/html/table/src/nsTableColGroupFrame.cpp
index 9297cea683c..2a270384cd3 100644
--- a/mozilla/layout/html/table/src/nsTableColGroupFrame.cpp
+++ b/mozilla/layout/html/table/src/nsTableColGroupFrame.cpp
@@ -90,7 +90,6 @@ nsTableColGroupFrame::AppendNewFrames(nsIPresContext& aPresContext, nsIFrame* aC
} else {
lastChild->SetNextSibling(aChildList);
}
- mChildCount += LengthOf(aChildList);
return NS_OK;
}
@@ -312,7 +311,7 @@ NS_METHOD nsTableColGroupFrame::List(FILE* out, PRInt32 aIndent, nsIListFilter *
fputs("\n", out);
}
// Output the children
- if (mChildCount > 0) {
+ if (nsnull != mFirstChild) {
if (PR_TRUE==outputMe)
{
if (0 != mState) {
diff --git a/mozilla/layout/html/table/src/nsTableFrame.cpp b/mozilla/layout/html/table/src/nsTableFrame.cpp
index 8ffce0ede7b..335563324ca 100644
--- a/mozilla/layout/html/table/src/nsTableFrame.cpp
+++ b/mozilla/layout/html/table/src/nsTableFrame.cpp
@@ -289,7 +289,6 @@ NS_IMETHODIMP
nsTableFrame::Init(nsIPresContext& aPresContext, nsIFrame* aChildList)
{
mFirstChild = aChildList;
- mChildCount = LengthOf(mFirstChild);
return NS_OK;
}
@@ -685,7 +684,6 @@ void nsTableFrame::EnsureColumns(nsIPresContext* aPresContext,
}
lastColGroupFrame->SetNextSibling(firstRowGroupFrame);
}
- mChildCount++;
}
else
{
@@ -784,7 +782,6 @@ void nsTableFrame::EnsureColumnFrameAt(PRInt32 aColIndex,
}
lastColGroupFrame->SetNextSibling(firstRowGroupFrame);
}
- mChildCount++;
}
else
{
@@ -1615,9 +1612,6 @@ nsReflowStatus nsTableFrame::ResizeReflowPass1(nsIPresContext* aPresContext,
this, aReflowState.maxSize.width, aReflowState.maxSize.height);
nsReflowStatus result = NS_FRAME_COMPLETE;
- mChildCount = 0;
- mFirstContentOffset = mLastContentOffset = 0;
-
nsSize availSize(NS_UNCONSTRAINEDSIZE, NS_UNCONSTRAINEDSIZE); // availSize is the space available at any given time in the process
nsSize maxSize(0, 0); // maxSize is the size of the largest child so far in the process
nsSize kidMaxSize(0,0);
@@ -1674,15 +1668,9 @@ nsReflowStatus nsTableFrame::ResizeReflowPass1(nsIPresContext* aPresContext,
if (NS_FRAME_IS_NOT_COMPLETE(result)) {
// If the child didn't finish layout then it means that it used
// up all of our available space (or needs us to split).
- mLastContentIsComplete = PR_FALSE;
break;
}
}
- if (NS_FRAME_IS_NOT_COMPLETE(result)) {
- // If the child didn't finish layout then it means that it used
- // up all of our available space (or needs us to split).
- mLastContentIsComplete = PR_FALSE;
- }
BuildColumnCache(aPresContext, aDesiredSize, aReflowState, aStatus);
// Recalculate Layout Dependencies
@@ -1690,9 +1678,6 @@ nsReflowStatus nsTableFrame::ResizeReflowPass1(nsIPresContext* aPresContext,
if (nsnull != prevKidFrame) {
NS_ASSERTION(IsLastChild(prevKidFrame), "unexpected last child");
- // can't use SetLastContentOffset here
- mLastContentOffset = contentOffset-1; // takes into account colGroup frame we're not using
- if (gsDebug) printf("INNER: set last content offset to %d\n", GetLastContentOffset()); //@@@
}
aDesiredSize.width = kidSize.width;
@@ -1928,37 +1913,10 @@ PRBool nsTableFrame::ReflowMappedChildren( nsIPresContext* aPresContext,
InnerTableReflowState& aState,
nsSize* aMaxElementSize)
{
-#ifdef NS_DEBUG
- VerifyLastIsComplete();
-#endif
-#ifdef NOISY
- ListTag(stdout);
- printf(": reflow mapped (childCount=%d) [%d,%d,%c]\n",
- mChildCount,
- mFirstContentOffset, mLastContentOffset,
- (mLastContentIsComplete ? 'T' : 'F'));
-#ifdef NOISY_FLOW
- {
- nsTableFrame* flow = (nsTableFrame*) mNextInFlow;
- while (flow != 0) {
- printf(" %p: [%d,%d,%c]\n",
- flow, flow->mFirstContentOffset, flow->mLastContentOffset,
- (flow->mLastContentIsComplete ? 'T' : 'F'));
- flow = (nsTableFrame*) flow->mNextInFlow;
- }
- }
-#endif
-#endif
NS_PRECONDITION(nsnull != mFirstChild, "no children");
PRInt32 childCount = 0;
nsIFrame* prevKidFrame = nsnull;
- mLastContentOffset = 0;
- // Remember our original mLastContentIsComplete so that if we end up
- // having to push children, we have the correct value to hand to
- // PushChildren.
- PRBool originalLastContentIsComplete = mLastContentIsComplete;
-
nsSize kidMaxElementSize(0,0);
nsSize* pKidMaxElementSize = (nsnull != aMaxElementSize) ? &kidMaxElementSize : nsnull;
PRBool result = PR_TRUE;
@@ -2004,15 +1962,7 @@ PRBool nsTableFrame::ReflowMappedChildren( nsIPresContext* aPresContext,
{
// The child is too wide to fit in the available space, and it's
// not our first child
-
- // Since we are giving the next-in-flow our last child, we
- // give it our original mLastContentIsComplete too (in case we
- // are pushing into an empty next-in-flow)
- PushChildren(kidFrame, prevKidFrame, originalLastContentIsComplete);
- PRInt32 contentIndex;
- prevKidFrame->GetContentIndex(contentIndex);
- SetLastContentOffset(contentIndex);
-
+ PushChildren(kidFrame, prevKidFrame, PR_TRUE);
result = PR_FALSE;
break;
}
@@ -2038,20 +1988,15 @@ PRBool nsTableFrame::ReflowMappedChildren( nsIPresContext* aPresContext,
}
}
childCount++;
- kidFrame->GetContentIndex(mLastContentOffset);
// Remember where we just were in case we end up pushing children
prevKidFrame = kidFrame;
- // Update mLastContentIsComplete now that this kid fits
- mLastContentIsComplete = PRBool(NS_FRAME_IS_COMPLETE(status));
-
// Special handling for incomplete children
if (NS_FRAME_IS_NOT_COMPLETE(status)) {
nsIFrame* kidNextInFlow;
kidFrame->GetNextInFlow(kidNextInFlow);
- PRBool lastContentIsComplete = mLastContentIsComplete;
if (nsnull == kidNextInFlow) {
// The child doesn't have a next-in-flow so create a continuing
// frame. This hooks the child into the flow
@@ -2069,12 +2014,6 @@ PRBool nsTableFrame::ReflowMappedChildren( nsIPresContext* aPresContext,
kidFrame->GetNextSibling(nextSib);
continuingFrame->SetNextSibling(nextSib);
kidFrame->SetNextSibling(continuingFrame);
- if (nsnull == nextSib) {
- // Assume that the continuation frame we just created is
- // complete, for now. It will get reflowed by our
- // next-in-flow (we are going to push it now)
- lastContentIsComplete = PR_TRUE;
- }
}
// We've used up all of our available space so push the remaining
// children to the next-in-flow
@@ -2082,10 +2021,7 @@ PRBool nsTableFrame::ReflowMappedChildren( nsIPresContext* aPresContext,
kidFrame->GetNextSibling(nextSibling);
if (nsnull != nextSibling) {
- PushChildren(nextSibling, kidFrame, lastContentIsComplete);
- PRInt32 contentIndex;
- prevKidFrame->GetContentIndex(contentIndex);
- SetLastContentOffset(contentIndex);
+ PushChildren(nextSibling, kidFrame, PR_TRUE);
}
result = PR_FALSE;
break;
@@ -2099,39 +2035,6 @@ PRBool nsTableFrame::ReflowMappedChildren( nsIPresContext* aPresContext,
}
// Update the child count
- mChildCount = childCount;
-#ifdef NS_DEBUG
- NS_POSTCONDITION(LengthOf(mFirstChild) == mChildCount, "bad child count");
-
- nsIFrame* lastChild = LastFrame(mFirstChild);
- PRInt32 lastIndexInParent;
-
- lastChild->GetContentIndex(lastIndexInParent);
- NS_POSTCONDITION(lastIndexInParent == mLastContentOffset, "bad last content offset");
-#endif
-
-#ifdef NS_DEBUG
- VerifyLastIsComplete();
-#endif
-#ifdef NOISY
- ListTag(stdout);
- printf(": reflow mapped %sok (childCount=%d) [%d,%d,%c]\n",
- (result ? "" : "NOT "),
- mChildCount,
- mFirstContentOffset, mLastContentOffset,
- (mLastContentIsComplete ? 'T' : 'F'));
-#ifdef NOISY_FLOW
- {
- nsTableFrame* flow = (nsTableFrame*) mNextInFlow;
- while (flow != 0) {
- printf(" %p: [%d,%d,%c]\n",
- flow, flow->mFirstContentOffset, flow->mLastContentOffset,
- (flow->mLastContentIsComplete ? 'T' : 'F'));
- flow = (nsTableFrame*) flow->mNextInFlow;
- }
- }
-#endif
-#endif
return result;
}
@@ -2147,43 +2050,11 @@ PRBool nsTableFrame::PullUpChildren(nsIPresContext* aPresContext,
InnerTableReflowState& aState,
nsSize* aMaxElementSize)
{
-#ifdef NS_DEBUG
- VerifyLastIsComplete();
-#endif
-#ifdef NOISY
- ListTag(stdout);
- printf(": pullup (childCount=%d) [%d,%d,%c]\n",
- mChildCount,
- mFirstContentOffset, mLastContentOffset,
- (mLastContentIsComplete ? 'T' : 'F'));
-#ifdef NOISY_FLOW
- {
- nsTableFrame* flow = (nsTableFrame*) mNextInFlow;
- while (flow != 0) {
- printf(" %p: [%d,%d,%c]\n",
- flow, flow->mFirstContentOffset, flow->mLastContentOffset,
- (flow->mLastContentIsComplete ? 'T' : 'F'));
- flow = (nsTableFrame*) flow->mNextInFlow;
- }
- }
-#endif
-#endif
- nsTableFrame* nextInFlow = (nsTableFrame*)mNextInFlow;
+ nsTableFrame* nextInFlow = (nsTableFrame*)mNextInFlow;
nsSize kidMaxElementSize(0,0);
nsSize* pKidMaxElementSize = (nsnull != aMaxElementSize) ? &kidMaxElementSize : nsnull;
-#ifdef NS_DEBUG
- PRInt32 kidIndex = NextChildOffset();
-#endif
nsIFrame* prevKidFrame = LastFrame(mFirstChild);
-
- // This will hold the prevKidFrame's mLastContentIsComplete
- // status. If we have to push the frame that follows prevKidFrame
- // then this will become our mLastContentIsComplete state. Since
- // prevKidFrame is initially our last frame, it's completion status
- // is our mLastContentIsComplete value.
- PRBool prevLastContentIsComplete = mLastContentIsComplete;
-
- PRBool result = PR_TRUE;
+ PRBool result = PR_TRUE;
while (nsnull != nextInFlow) {
nsReflowMetrics kidSize(pKidMaxElementSize);
@@ -2219,7 +2090,6 @@ PRBool nsTableFrame::PullUpChildren(nsIPresContext* aPresContext,
if ((kidFrameSize.height > aState.availSize.height) &&
NS_FRAME_IS_NOT_SPLITTABLE(kidIsSplittable)) {
result = PR_FALSE;
- mLastContentIsComplete = prevLastContentIsComplete;
break;
}
nsReflowState kidReflowState(kidFrame, aState.reflowState, aState.availSize,
@@ -2232,7 +2102,6 @@ PRBool nsTableFrame::PullUpChildren(nsIPresContext* aPresContext,
// The child is too wide to fit in the available space, and it's
// not our first child
result = PR_FALSE;
- mLastContentIsComplete = prevLastContentIsComplete;
break;
}
@@ -2257,13 +2126,6 @@ PRBool nsTableFrame::PullUpChildren(nsIPresContext* aPresContext,
// Remove the frame from its current parent
kidFrame->GetNextSibling(nextInFlow->mFirstChild);
- nextInFlow->mChildCount--;
- // Update the next-in-flows first content offset
- if (nsnull != nextInFlow->mFirstChild) {
- PRInt32 contentIndex;
- nextInFlow->mFirstChild->GetContentIndex(contentIndex);
- nextInFlow->SetFirstContentOffset(contentIndex);
- }
// Link the frame into our list of children
kidFrame->SetGeometricParent(this);
@@ -2275,21 +2137,13 @@ PRBool nsTableFrame::PullUpChildren(nsIPresContext* aPresContext,
}
if (nsnull == prevKidFrame) {
mFirstChild = kidFrame;
- PRInt32 contentIndex;
- kidFrame->GetContentIndex(contentIndex);
- SetFirstContentOffset(contentIndex);
} else {
prevKidFrame->SetNextSibling(kidFrame);
}
kidFrame->SetNextSibling(nsnull);
- mChildCount++;
// Remember where we just were in case we end up pushing children
prevKidFrame = kidFrame;
- prevLastContentIsComplete = mLastContentIsComplete;
-
- // Is the child we just pulled up complete?
- mLastContentIsComplete = PRBool(NS_FRAME_IS_COMPLETE(status));
if (NS_FRAME_IS_NOT_COMPLETE(status)) {
// No the child isn't complete
nsIFrame* kidNextInFlow;
@@ -2311,16 +2165,10 @@ PRBool nsTableFrame::PullUpChildren(nsIPresContext* aPresContext,
// it to the next-in-flow. This ensures the next-in-flow's
// content offsets and child count are set properly. Note that
// we can safely assume that the continuation is complete so
- // we pass PR_TRUE into PushChidren in case our next-in-flow
- // was just drained and now needs to know it's
- // mLastContentIsComplete state.
+ // we pass PR_TRUE into PushChidren
kidFrame->SetNextSibling(continuingFrame);
PushChildren(continuingFrame, kidFrame, PR_TRUE);
-
- // After we push the continuation frame we don't need to fuss
- // with mLastContentIsComplete beause the continuation frame
- // is no longer on *our* list.
}
// If the child isn't complete then it means that we've used up
@@ -2330,39 +2178,6 @@ PRBool nsTableFrame::PullUpChildren(nsIPresContext* aPresContext,
}
}
- // Update our last content offset
- if (nsnull != prevKidFrame) {
- NS_ASSERTION(IsLastChild(prevKidFrame), "bad last child");
- PRInt32 contentIndex;
- prevKidFrame->GetContentIndex(contentIndex);
- SetLastContentOffset(contentIndex);
- }
-
- // We need to make sure the first content offset is correct for any empty
- // next-in-flow frames (frames where we pulled up all the child frames)
- nextInFlow = (nsTableFrame*)mNextInFlow;
- if ((nsnull != nextInFlow) && (nsnull == nextInFlow->mFirstChild)) {
- // We have at least one empty frame. Did we succesfully pull up all the
- // child frames?
- if (PR_FALSE == result) {
- // No, so we need to adjust the first content offset of all the empty
- // frames
- AdjustOffsetOfEmptyNextInFlows();
-#ifdef NS_DEBUG
- } else {
- // Yes, we successfully pulled up all the child frames which means all
- // the next-in-flows must be empty. Do a sanity check
- while (nsnull != nextInFlow) {
- NS_ASSERTION(nsnull == nextInFlow->mFirstChild, "non-empty next-in-flow");
- nextInFlow->GetNextInFlow((nsIFrame*&)nextInFlow);
- }
-#endif
- }
- }
-
-#ifdef NS_DEBUG
- VerifyLastIsComplete();
-#endif
return result;
}
@@ -3389,7 +3204,7 @@ NS_METHOD nsTableFrame::List(FILE* out, PRInt32 aIndent, nsIListFilter *aFilter)
}
}
// Output the children
- if (mChildCount > 0) {
+ if (nsnull != mFirstChild) {
if (PR_TRUE==outputMe)
{
if (0 != mState) {
diff --git a/mozilla/layout/html/table/src/nsTableOuterFrame.cpp b/mozilla/layout/html/table/src/nsTableOuterFrame.cpp
index b5e2c67ffca..bbd1c9ad211 100644
--- a/mozilla/layout/html/table/src/nsTableOuterFrame.cpp
+++ b/mozilla/layout/html/table/src/nsTableOuterFrame.cpp
@@ -107,12 +107,10 @@ nsTableOuterFrame::nsTableOuterFrame(nsIContent* aContent, nsIFrame* aParentFram
NS_IMETHODIMP nsTableOuterFrame::Init(nsIPresContext& aPresContext, nsIFrame* aChildList)
{
mFirstChild = aChildList;
- mChildCount = LengthOf(mFirstChild);
- NS_ASSERTION(mChildCount > 0, "bad child list");
// Set our internal member data
mInnerTableFrame = (nsTableFrame*)mFirstChild;
- if (2 == mChildCount) {
+ if (2 == LengthOf(mFirstChild)) {
mFirstChild->GetNextSibling(mCaptionFrame);
}
@@ -616,7 +614,6 @@ nsresult nsTableOuterFrame::CreateChildFrames(nsIPresContext* aPresContext)
// Add it to the list of child frames
mFirstChild = mInnerTableFrame;
- mChildCount++;
// Now create the caption frame, prepending a top caption and appending a
// bottom caption
@@ -666,7 +663,6 @@ nsresult nsTableOuterFrame::CreateChildFrames(nsIPresContext* aPresContext)
mCaptionFrame->SetNextSibling(mFirstChild);
mFirstChild = mCaptionFrame;
}
- mChildCount++;
break;
}
}
@@ -700,23 +696,6 @@ nsTableOuterFrame::PrepareContinuingFrame(nsIPresContext& aPresContext,
{
// Append the continuing frame to the flow
aContFrame->AppendToFlow(this);
-
- // Initialize it's content offsets. Note that we assume for now that
- // the continuingFrame will map the remainder of the content and
- // that therefore mLastContentIsComplete will be true.
- PRInt32 nextOffset;
- if (mChildCount > 0) {
- nextOffset = mLastContentOffset;
- if (mLastContentIsComplete) {
- nextOffset++;
- }
- } else {
- nextOffset = mFirstContentOffset;
- }
-
- aContFrame->SetFirstContentOffset(nextOffset);
- aContFrame->SetLastContentOffset(nextOffset);
- aContFrame->SetLastContentIsComplete(PR_TRUE);
aContFrame->SetStyleContext(&aPresContext, aStyleContext);
}
@@ -781,26 +760,6 @@ PRBool nsTableOuterFrame::DeleteChildsNextInFlow(nsIPresContext& aPresContext, n
// Take the next-in-flow out of the parent's child list
if (parent->mFirstChild == nextInFlow) {
nextInFlow->GetNextSibling(parent->mFirstChild);
- if (nsnull != parent->mFirstChild) {
- PRInt32 contentIndex;
- parent->mFirstChild->GetContentIndex(contentIndex);
- parent->SetFirstContentOffset(contentIndex);
- if (parent->IsPseudoFrame()) {
- // Tell the parent's parent to update its content offsets
- nsContainerFrame* pp = (nsContainerFrame*) parent->mGeometricParent;
- pp->PropagateContentOffsets(parent, parent->mFirstContentOffset,
- parent->mLastContentOffset,
- parent->mLastContentIsComplete);
- }
- }
-
- // When a parent loses it's last child and that last child is a
- // pseudo-frame then the parent's content offsets are now wrong.
- // However, we know that the parent will eventually be reflowed
- // in one of two ways: it will either get a chance to pullup
- // children or it will be deleted because it's prev-in-flow
- // (e.g. this) is complete. In either case, the content offsets
- // will be repaired.
} else {
nsIFrame* nextSibling;
@@ -820,7 +779,6 @@ PRBool nsTableOuterFrame::DeleteChildsNextInFlow(nsIPresContext& aPresContext, n
// Delete the next-in-flow frame and adjust it's parent's child count
nextInFlow->DeleteFrame(aPresContext);
- parent->mChildCount--;
#ifdef NS_DEBUG
aChild->GetNextInFlow(nextInFlow);
@@ -918,7 +876,7 @@ NS_METHOD nsTableOuterFrame::List(FILE* out, PRInt32 aIndent, nsIListFilter *aFi
fputs("\n", out);
}
// Output the children
- if (mChildCount > 0) {
+ if (nsnull != mFirstChild) {
if (PR_TRUE==outputMe)
{
if (0 != mState) {
diff --git a/mozilla/layout/html/table/src/nsTableRowFrame.cpp b/mozilla/layout/html/table/src/nsTableRowFrame.cpp
index e0c77ac9029..8791b62415e 100644
--- a/mozilla/layout/html/table/src/nsTableRowFrame.cpp
+++ b/mozilla/layout/html/table/src/nsTableRowFrame.cpp
@@ -100,7 +100,6 @@ NS_IMETHODIMP
nsTableRowFrame::Init(nsIPresContext& aPresContext, nsIFrame* aChildList)
{
mFirstChild = aChildList;
- mChildCount = LengthOf(mFirstChild);
return NS_OK;
}
@@ -1027,7 +1026,7 @@ NS_METHOD nsTableRowFrame::List(FILE* out, PRInt32 aIndent, nsIListFilter *aFilt
fputs("\n", out);
}
// Output the children
- if (mChildCount > 0) {
+ if (nsnull != mFirstChild) {
if (PR_TRUE==outputMe)
{
if (0 != mState) {
diff --git a/mozilla/layout/html/table/src/nsTableRowGroupFrame.cpp b/mozilla/layout/html/table/src/nsTableRowGroupFrame.cpp
index a6245e40294..733dd858401 100644
--- a/mozilla/layout/html/table/src/nsTableRowGroupFrame.cpp
+++ b/mozilla/layout/html/table/src/nsTableRowGroupFrame.cpp
@@ -130,14 +130,6 @@ NS_IMETHODIMP
nsTableRowGroupFrame::Init(nsIPresContext& aPresContext, nsIFrame* aChildList)
{
mFirstChild = aChildList;
- mChildCount = LengthOf(mFirstChild);
-
- // XXX TEMP CODE UNTIL nsContainerFrame GOES AWAY...
- nsIFrame* lastChild = LastFrame(mFirstChild);
- if (nsnull != lastChild) {
- lastChild->GetContentIndex(mLastContentOffset);
- }
-
return NS_OK;
}
@@ -268,36 +260,8 @@ PRBool nsTableRowGroupFrame::ReflowMappedChildren( nsIPresContext* aPresCon
RowGroupReflowState& aState,
nsSize* aMaxElementSize)
{
-#ifdef NS_DEBUG
- VerifyLastIsComplete();
-#endif
-#ifdef NOISY
- ListTag(stdout);
- printf(": reflow mapped (childCount=%d) [%d,%d,%c]\n",
- mChildCount,
- mFirstContentOffset, mLastContentOffset,
- (mLastContentIsComplete ? 'T' : 'F'));
-#ifdef NOISY_FLOW
- {
- nsTableRowGroupFrame* flow = (nsTableRowGroupFrame*) mNextInFlow;
- while (flow != 0) {
- printf(" %p: [%d,%d,%c]\n",
- flow, flow->mFirstContentOffset, flow->mLastContentOffset,
- (flow->mLastContentIsComplete ? 'T' : 'F'));
- flow = (nsTableRowGroupFrame*) flow->mNextInFlow;
- }
- }
-#endif
-#endif
NS_PRECONDITION(nsnull != mFirstChild, "no children");
- PRInt32 childCount = 0;
nsIFrame* prevKidFrame = nsnull;
-
- // Remember our original mLastContentIsComplete so that if we end up
- // having to push children, we have the correct value to hand to
- // PushChildren.
- PRBool lastContentIsComplete = mLastContentIsComplete;
-
nsSize kidMaxElementSize;
nsSize* pKidMaxElementSize = (nsnull != aMaxElementSize) ? &kidMaxElementSize : nsnull;
PRBool result = PR_TRUE;
@@ -354,17 +318,7 @@ PRBool nsTableRowGroupFrame::ReflowMappedChildren( nsIPresContext* aPresCon
//
// Note that if the width is too big that's okay and we allow the
// child to extend horizontally outside of the reflow area
-
- // Since we are giving the next-in-flow our last child, we
- // give it our original mLastContentIsComplete, too (in case we
- // are pushing into an empty next-in-flow)
- PushChildren(kidFrame, prevKidFrame, lastContentIsComplete);
- PRInt32 contentIndex;
- prevKidFrame->GetContentIndex(contentIndex);
- SetLastContentOffset(contentIndex);
-
- // Our mLastContentIsComplete was already set by the last kid we
- // reflowed reflow's status
+ PushChildren(kidFrame, prevKidFrame, PR_TRUE);
result = PR_FALSE;
break;
}
@@ -378,14 +332,10 @@ PRBool nsTableRowGroupFrame::ReflowMappedChildren( nsIPresContext* aPresCon
} else {
aState.prevMaxPosBottomMargin = bottomMargin;
}
- childCount++;
// Remember where we just were in case we end up pushing children
prevKidFrame = kidFrame;
- // Update mLastContentIsComplete now that this kid fits
- mLastContentIsComplete = NS_FRAME_IS_COMPLETE(status);
-
/* Row groups should not create continuing frames for rows
* unless they absolutely have to!
* check to see if this is absolutely necessary (with new params from troy)
@@ -398,7 +348,6 @@ PRBool nsTableRowGroupFrame::ReflowMappedChildren( nsIPresContext* aPresCon
nsIFrame* kidNextInFlow;
kidFrame->GetNextInFlow(kidNextInFlow);
- PRBool lastContentIsComplete = mLastContentIsComplete;
if (nsnull == kidNextInFlow) {
// No the child isn't complete, and it doesn't have a next in flow so
// create a continuing frame. This hooks the child into the flow.
@@ -415,12 +364,6 @@ PRBool nsTableRowGroupFrame::ReflowMappedChildren( nsIPresContext* aPresCon
kidFrame->GetNextSibling(nextSib);
continuingFrame->SetNextSibling(nextSib);
kidFrame->SetNextSibling(continuingFrame);
- if (nsnull == nextSib) {
- // Assume that the continuation frame we just created is
- // complete, for now. It will get reflowed by our
- // next-in-flow (we are going to push it now)
- lastContentIsComplete = PR_TRUE;
- }
}
// We've used up all of our available space so push the remaining
// children to the next-in-flow
@@ -428,10 +371,7 @@ PRBool nsTableRowGroupFrame::ReflowMappedChildren( nsIPresContext* aPresCon
kidFrame->GetNextSibling(nextSibling);
if (nsnull != nextSibling) {
- PushChildren(nextSibling, kidFrame, lastContentIsComplete);
- PRInt32 contentIndex;
- prevKidFrame->GetContentIndex(contentIndex);
- SetLastContentOffset(contentIndex);
+ PushChildren(nextSibling, kidFrame, PR_TRUE);
}
result = PR_FALSE;
break;
@@ -449,40 +389,6 @@ PRBool nsTableRowGroupFrame::ReflowMappedChildren( nsIPresContext* aPresCon
}
// Update the child count
- mChildCount = childCount;
-
-#ifdef NS_DEBUG
- NS_POSTCONDITION(LengthOf(mFirstChild) == mChildCount, "bad child count");
-
- nsIFrame* lastChild = LastFrame(mFirstChild);
- PRInt32 lastIndexInParent;
-
- lastChild->GetContentIndex(lastIndexInParent);
- NS_POSTCONDITION(lastIndexInParent == mLastContentOffset, "bad last content offset");
-#endif
-
-#ifdef NS_DEBUG
- VerifyLastIsComplete();
-#endif
-#ifdef NOISY
- ListTag(stdout);
- printf(": reflow mapped %sok (childCount=%d) [%d,%d,%c]\n",
- (result ? "" : "NOT "),
- mChildCount,
- mFirstContentOffset, mLastContentOffset,
- (mLastContentIsComplete ? 'T' : 'F'));
-#ifdef NOISY_FLOW
- {
- nsTableRowGroupFrame* flow = (nsTableRowGroupFrame*) mNextInFlow;
- while (flow != 0) {
- printf(" %p: [%d,%d,%c]\n",
- flow, flow->mFirstContentOffset, flow->mLastContentOffset,
- (flow->mLastContentIsComplete ? 'T' : 'F'));
- flow = (nsTableRowGroupFrame*) flow->mNextInFlow;
- }
- }
-#endif
-#endif
return result;
}
@@ -498,43 +404,11 @@ PRBool nsTableRowGroupFrame::PullUpChildren(nsIPresContext* aPresContext,
RowGroupReflowState& aState,
nsSize* aMaxElementSize)
{
-#ifdef NS_DEBUG
- VerifyLastIsComplete();
-#endif
-#ifdef NOISY
- ListTag(stdout);
- printf(": pullup (childCount=%d) [%d,%d,%c]\n",
- mChildCount,
- mFirstContentOffset, mLastContentOffset,
- (mLastContentIsComplete ? 'T' : 'F'));
-#ifdef NOISY_FLOW
- {
- nsTableRowGroupFrame* flow = (nsTableRowGroupFrame*) mNextInFlow;
- while (flow != 0) {
- printf(" %p: [%d,%d,%c]\n",
- flow, flow->mFirstContentOffset, flow->mLastContentOffset,
- (flow->mLastContentIsComplete ? 'T' : 'F'));
- flow = (nsTableRowGroupFrame*) flow->mNextInFlow;
- }
- }
-#endif
-#endif
nsTableRowGroupFrame* nextInFlow = (nsTableRowGroupFrame*)mNextInFlow;
nsSize kidMaxElementSize;
nsSize* pKidMaxElementSize = (nsnull != aMaxElementSize) ? &kidMaxElementSize : nsnull;
-#ifdef NS_DEBUG
- PRInt32 kidIndex = NextChildOffset();
-#endif
nsIFrame* prevKidFrame = LastFrame(mFirstChild);
-
- // This will hold the prevKidFrame's mLastContentIsComplete
- // status. If we have to push the frame that follows prevKidFrame
- // then this will become our mLastContentIsComplete state. Since
- // prevKidFrame is initially our last frame, it's completion status
- // is our mLastContentIsComplete value.
- PRBool prevLastContentIsComplete = mLastContentIsComplete;
-
- PRBool result = PR_TRUE;
+ PRBool result = PR_TRUE;
while (nsnull != nextInFlow) {
nsReflowMetrics kidSize(pKidMaxElementSize);
@@ -571,7 +445,6 @@ PRBool nsTableRowGroupFrame::PullUpChildren(nsIPresContext* aPresContext,
if ((kidFrameSize.height > aState.availSize.height) &&
NS_FRAME_IS_NOT_SPLITTABLE(kidIsSplittable)) {
result = PR_FALSE;
- mLastContentIsComplete = prevLastContentIsComplete;
break;
}
nsReflowState kidReflowState(kidFrame, aState.reflowState, aState.availSize,
@@ -584,7 +457,6 @@ PRBool nsTableRowGroupFrame::PullUpChildren(nsIPresContext* aPresContext,
// The child is too wide to fit in the available space, and it's
// not our first child
result = PR_FALSE;
- mLastContentIsComplete = prevLastContentIsComplete;
break;
}
@@ -597,13 +469,6 @@ PRBool nsTableRowGroupFrame::PullUpChildren(nsIPresContext* aPresContext,
// Remove the frame from its current parent
kidFrame->GetNextSibling(nextInFlow->mFirstChild);
- nextInFlow->mChildCount--;
- // Update the next-in-flows first content offset
- if (nsnull != nextInFlow->mFirstChild) {
- PRInt32 contentIndex;
- nextInFlow->mFirstChild->GetContentIndex(contentIndex);
- nextInFlow->SetFirstContentOffset(contentIndex);
- }
// Link the frame into our list of children
kidFrame->SetGeometricParent(this);
@@ -615,21 +480,15 @@ PRBool nsTableRowGroupFrame::PullUpChildren(nsIPresContext* aPresContext,
}
if (nsnull == prevKidFrame) {
mFirstChild = kidFrame;
- PRInt32 contentIndex;
- kidFrame->GetContentIndex(contentIndex);
- SetFirstContentOffset(contentIndex);
} else {
prevKidFrame->SetNextSibling(kidFrame);
}
kidFrame->SetNextSibling(nsnull);
- mChildCount++;
// Remember where we just were in case we end up pushing children
prevKidFrame = kidFrame;
- prevLastContentIsComplete = mLastContentIsComplete;
// Is the child we just pulled up complete?
- mLastContentIsComplete = NS_FRAME_IS_COMPLETE(status);
if (NS_FRAME_IS_NOT_COMPLETE(status)) {
// No the child isn't complete
nsIFrame* kidNextInFlow;
@@ -651,16 +510,10 @@ PRBool nsTableRowGroupFrame::PullUpChildren(nsIPresContext* aPresContext,
// it to the next-in-flow. This ensures the next-in-flow's
// content offsets and child count are set properly. Note that
// we can safely assume that the continuation is complete so
- // we pass PR_TRUE into PushChidren in case our next-in-flow
- // was just drained and now needs to know it's
- // mLastContentIsComplete state.
+ // we pass PR_TRUE into PushChidren
kidFrame->SetNextSibling(continuingFrame);
PushChildren(continuingFrame, kidFrame, PR_TRUE);
-
- // After we push the continuation frame we don't need to fuss
- // with mLastContentIsComplete beause the continuation frame
- // is no longer on *our* list.
}
// If the child isn't complete then it means that we've used up
@@ -673,9 +526,6 @@ PRBool nsTableRowGroupFrame::PullUpChildren(nsIPresContext* aPresContext,
// Update our last content offset
if (nsnull != prevKidFrame) {
NS_ASSERTION(IsLastChild(prevKidFrame), "bad last child");
- PRInt32 contentIndex;
- prevKidFrame->GetContentIndex(contentIndex);
- SetLastContentOffset(contentIndex);
}
// We need to make sure the first content offset is correct for any empty
@@ -700,29 +550,6 @@ PRBool nsTableRowGroupFrame::PullUpChildren(nsIPresContext* aPresContext,
}
}
-#ifdef NS_DEBUG
- VerifyLastIsComplete();
-#endif
-
-#ifdef NOISY
- ListTag(stdout);
- printf(": pullup %sok (childCount=%d) [%d,%d,%c]\n",
- (result ? "" : "NOT "),
- mChildCount,
- mFirstContentOffset, mLastContentOffset,
- (mLastContentIsComplete ? 'T' : 'F'));
-#ifdef NOISY_FLOW
- {
- nsTableRowGroupFrame* flow = (nsTableRowGroupFrame*) mNextInFlow;
- while (flow != 0) {
- printf(" %p: [%d,%d,%c]\n",
- flow, flow->mFirstContentOffset, flow->mLastContentOffset,
- (flow->mLastContentIsComplete ? 'T' : 'F'));
- flow = (nsTableRowGroupFrame*) flow->mNextInFlow;
- }
- }
-#endif
-#endif
return result;
}
@@ -1134,7 +961,7 @@ NS_METHOD nsTableRowGroupFrame::List(FILE* out, PRInt32 aIndent, nsIListFilter *
}
// Output the children
- if (mChildCount > 0) {
+ if (nsnull != mFirstChild) {
if (PR_TRUE==outputMe)
{
if (0 != mState) {
diff --git a/mozilla/layout/tables/nsTableCellFrame.cpp b/mozilla/layout/tables/nsTableCellFrame.cpp
index 29a4df94cd8..a5863ae20b0 100644
--- a/mozilla/layout/tables/nsTableCellFrame.cpp
+++ b/mozilla/layout/tables/nsTableCellFrame.cpp
@@ -77,7 +77,6 @@ nsTableCellFrame::Init(nsIPresContext& aPresContext, nsIFrame* aChildList)
{
// Create body pseudo frame
NS_NewBodyFrame(mContent, this, mFirstChild);
- mChildCount = 1;
// Resolve style and set the style context
nsIStyleContext* styleContext =
@@ -194,7 +193,6 @@ void nsTableCellFrame::CreatePsuedoFrame(nsIPresContext* aPresContext)
if (nsnull == mPrevInFlow) {
// No, create a body pseudo frame
NS_NewBodyFrame(mContent, this, mFirstChild);
- mChildCount = 1;
// Resolve style and set the style context
nsIStyleContext* styleContext =
@@ -212,7 +210,6 @@ void nsTableCellFrame::CreatePsuedoFrame(nsIPresContext* aPresContext)
prevPseudoFrame->GetStyleContext(aPresContext, kidSC);
prevPseudoFrame->CreateContinuingFrame(*aPresContext, this, kidSC, mFirstChild);
NS_RELEASE(kidSC);
- mChildCount = 1;
}
}
@@ -295,8 +292,6 @@ NS_METHOD nsTableCellFrame::Reflow(nsIPresContext& aPresContext,
printf("%p nsTableCellFrame::Reflow: maxSize=%d,%d\n",
this, aReflowState.maxSize.width, aReflowState.maxSize.height);
- mFirstContentOffset = mLastContentOffset = 0;
-
nsSize availSize(aReflowState.maxSize);
nsSize maxElementSize;
nsSize *pMaxElementSize = aDesiredSize.maxElementSize;
@@ -323,8 +318,6 @@ NS_METHOD nsTableCellFrame::Reflow(nsIPresContext& aPresContext,
nsTableFrame* tableFrame = GetTableFrame();
tableFrame->GetCellMarginData(this,margin);
- mLastContentIsComplete = PR_TRUE;
-
// get frame, creating one if needed
if (nsnull==mFirstChild)
{
@@ -378,10 +371,6 @@ NS_METHOD nsTableCellFrame::Reflow(nsIPresContext& aPresContext,
this, kidSize.width, kidSize.height);
}
- // Set our last content offset based on the pseudo-frame
- nsBodyFrame* bodyPseudoFrame = (nsBodyFrame*)mFirstChild;
- mLastContentOffset = bodyPseudoFrame->GetLastContentOffset();
-
// Place the child
//////////////////////////////// HACK //////////////////////////////
kidSize.width = PR_MIN(kidSize.width, availSize.width);
@@ -389,12 +378,6 @@ NS_METHOD nsTableCellFrame::Reflow(nsIPresContext& aPresContext,
mFirstChild->SetRect(nsRect(leftInset, topInset,
kidSize.width, kidSize.height));
- if (NS_FRAME_IS_NOT_COMPLETE(aStatus)) {
- // If the child didn't finish layout then it means that it used
- // up all of our available space (or needs us to split).
- mLastContentIsComplete = PR_FALSE;
- }
-
// Return our size and our result
// first, compute the height
@@ -1126,7 +1109,7 @@ NS_METHOD nsTableCellFrame::List(FILE* out, PRInt32 aIndent, nsIListFilter *aFil
fputs("\n", out);
}
// Output the children
- if (mChildCount > 0) {
+ if (nsnull != mFirstChild) {
if (PR_TRUE==outputMe)
{
if (0 != mState) {
@@ -1201,7 +1184,7 @@ void nsTableCellFrame::List(FILE* out, PRInt32 aIndent, nsIListFilter *aFilter)
}
// Output the children
- if (mChildCount > 0) {
+ if (nsnull != mFirstChild) {
if (PR_TRUE==outputMe)
{
if (0 != mState) {
diff --git a/mozilla/layout/tables/nsTableColGroupFrame.cpp b/mozilla/layout/tables/nsTableColGroupFrame.cpp
index 9297cea683c..2a270384cd3 100644
--- a/mozilla/layout/tables/nsTableColGroupFrame.cpp
+++ b/mozilla/layout/tables/nsTableColGroupFrame.cpp
@@ -90,7 +90,6 @@ nsTableColGroupFrame::AppendNewFrames(nsIPresContext& aPresContext, nsIFrame* aC
} else {
lastChild->SetNextSibling(aChildList);
}
- mChildCount += LengthOf(aChildList);
return NS_OK;
}
@@ -312,7 +311,7 @@ NS_METHOD nsTableColGroupFrame::List(FILE* out, PRInt32 aIndent, nsIListFilter *
fputs("\n", out);
}
// Output the children
- if (mChildCount > 0) {
+ if (nsnull != mFirstChild) {
if (PR_TRUE==outputMe)
{
if (0 != mState) {
diff --git a/mozilla/layout/tables/nsTableFrame.cpp b/mozilla/layout/tables/nsTableFrame.cpp
index 8ffce0ede7b..335563324ca 100644
--- a/mozilla/layout/tables/nsTableFrame.cpp
+++ b/mozilla/layout/tables/nsTableFrame.cpp
@@ -289,7 +289,6 @@ NS_IMETHODIMP
nsTableFrame::Init(nsIPresContext& aPresContext, nsIFrame* aChildList)
{
mFirstChild = aChildList;
- mChildCount = LengthOf(mFirstChild);
return NS_OK;
}
@@ -685,7 +684,6 @@ void nsTableFrame::EnsureColumns(nsIPresContext* aPresContext,
}
lastColGroupFrame->SetNextSibling(firstRowGroupFrame);
}
- mChildCount++;
}
else
{
@@ -784,7 +782,6 @@ void nsTableFrame::EnsureColumnFrameAt(PRInt32 aColIndex,
}
lastColGroupFrame->SetNextSibling(firstRowGroupFrame);
}
- mChildCount++;
}
else
{
@@ -1615,9 +1612,6 @@ nsReflowStatus nsTableFrame::ResizeReflowPass1(nsIPresContext* aPresContext,
this, aReflowState.maxSize.width, aReflowState.maxSize.height);
nsReflowStatus result = NS_FRAME_COMPLETE;
- mChildCount = 0;
- mFirstContentOffset = mLastContentOffset = 0;
-
nsSize availSize(NS_UNCONSTRAINEDSIZE, NS_UNCONSTRAINEDSIZE); // availSize is the space available at any given time in the process
nsSize maxSize(0, 0); // maxSize is the size of the largest child so far in the process
nsSize kidMaxSize(0,0);
@@ -1674,15 +1668,9 @@ nsReflowStatus nsTableFrame::ResizeReflowPass1(nsIPresContext* aPresContext,
if (NS_FRAME_IS_NOT_COMPLETE(result)) {
// If the child didn't finish layout then it means that it used
// up all of our available space (or needs us to split).
- mLastContentIsComplete = PR_FALSE;
break;
}
}
- if (NS_FRAME_IS_NOT_COMPLETE(result)) {
- // If the child didn't finish layout then it means that it used
- // up all of our available space (or needs us to split).
- mLastContentIsComplete = PR_FALSE;
- }
BuildColumnCache(aPresContext, aDesiredSize, aReflowState, aStatus);
// Recalculate Layout Dependencies
@@ -1690,9 +1678,6 @@ nsReflowStatus nsTableFrame::ResizeReflowPass1(nsIPresContext* aPresContext,
if (nsnull != prevKidFrame) {
NS_ASSERTION(IsLastChild(prevKidFrame), "unexpected last child");
- // can't use SetLastContentOffset here
- mLastContentOffset = contentOffset-1; // takes into account colGroup frame we're not using
- if (gsDebug) printf("INNER: set last content offset to %d\n", GetLastContentOffset()); //@@@
}
aDesiredSize.width = kidSize.width;
@@ -1928,37 +1913,10 @@ PRBool nsTableFrame::ReflowMappedChildren( nsIPresContext* aPresContext,
InnerTableReflowState& aState,
nsSize* aMaxElementSize)
{
-#ifdef NS_DEBUG
- VerifyLastIsComplete();
-#endif
-#ifdef NOISY
- ListTag(stdout);
- printf(": reflow mapped (childCount=%d) [%d,%d,%c]\n",
- mChildCount,
- mFirstContentOffset, mLastContentOffset,
- (mLastContentIsComplete ? 'T' : 'F'));
-#ifdef NOISY_FLOW
- {
- nsTableFrame* flow = (nsTableFrame*) mNextInFlow;
- while (flow != 0) {
- printf(" %p: [%d,%d,%c]\n",
- flow, flow->mFirstContentOffset, flow->mLastContentOffset,
- (flow->mLastContentIsComplete ? 'T' : 'F'));
- flow = (nsTableFrame*) flow->mNextInFlow;
- }
- }
-#endif
-#endif
NS_PRECONDITION(nsnull != mFirstChild, "no children");
PRInt32 childCount = 0;
nsIFrame* prevKidFrame = nsnull;
- mLastContentOffset = 0;
- // Remember our original mLastContentIsComplete so that if we end up
- // having to push children, we have the correct value to hand to
- // PushChildren.
- PRBool originalLastContentIsComplete = mLastContentIsComplete;
-
nsSize kidMaxElementSize(0,0);
nsSize* pKidMaxElementSize = (nsnull != aMaxElementSize) ? &kidMaxElementSize : nsnull;
PRBool result = PR_TRUE;
@@ -2004,15 +1962,7 @@ PRBool nsTableFrame::ReflowMappedChildren( nsIPresContext* aPresContext,
{
// The child is too wide to fit in the available space, and it's
// not our first child
-
- // Since we are giving the next-in-flow our last child, we
- // give it our original mLastContentIsComplete too (in case we
- // are pushing into an empty next-in-flow)
- PushChildren(kidFrame, prevKidFrame, originalLastContentIsComplete);
- PRInt32 contentIndex;
- prevKidFrame->GetContentIndex(contentIndex);
- SetLastContentOffset(contentIndex);
-
+ PushChildren(kidFrame, prevKidFrame, PR_TRUE);
result = PR_FALSE;
break;
}
@@ -2038,20 +1988,15 @@ PRBool nsTableFrame::ReflowMappedChildren( nsIPresContext* aPresContext,
}
}
childCount++;
- kidFrame->GetContentIndex(mLastContentOffset);
// Remember where we just were in case we end up pushing children
prevKidFrame = kidFrame;
- // Update mLastContentIsComplete now that this kid fits
- mLastContentIsComplete = PRBool(NS_FRAME_IS_COMPLETE(status));
-
// Special handling for incomplete children
if (NS_FRAME_IS_NOT_COMPLETE(status)) {
nsIFrame* kidNextInFlow;
kidFrame->GetNextInFlow(kidNextInFlow);
- PRBool lastContentIsComplete = mLastContentIsComplete;
if (nsnull == kidNextInFlow) {
// The child doesn't have a next-in-flow so create a continuing
// frame. This hooks the child into the flow
@@ -2069,12 +2014,6 @@ PRBool nsTableFrame::ReflowMappedChildren( nsIPresContext* aPresContext,
kidFrame->GetNextSibling(nextSib);
continuingFrame->SetNextSibling(nextSib);
kidFrame->SetNextSibling(continuingFrame);
- if (nsnull == nextSib) {
- // Assume that the continuation frame we just created is
- // complete, for now. It will get reflowed by our
- // next-in-flow (we are going to push it now)
- lastContentIsComplete = PR_TRUE;
- }
}
// We've used up all of our available space so push the remaining
// children to the next-in-flow
@@ -2082,10 +2021,7 @@ PRBool nsTableFrame::ReflowMappedChildren( nsIPresContext* aPresContext,
kidFrame->GetNextSibling(nextSibling);
if (nsnull != nextSibling) {
- PushChildren(nextSibling, kidFrame, lastContentIsComplete);
- PRInt32 contentIndex;
- prevKidFrame->GetContentIndex(contentIndex);
- SetLastContentOffset(contentIndex);
+ PushChildren(nextSibling, kidFrame, PR_TRUE);
}
result = PR_FALSE;
break;
@@ -2099,39 +2035,6 @@ PRBool nsTableFrame::ReflowMappedChildren( nsIPresContext* aPresContext,
}
// Update the child count
- mChildCount = childCount;
-#ifdef NS_DEBUG
- NS_POSTCONDITION(LengthOf(mFirstChild) == mChildCount, "bad child count");
-
- nsIFrame* lastChild = LastFrame(mFirstChild);
- PRInt32 lastIndexInParent;
-
- lastChild->GetContentIndex(lastIndexInParent);
- NS_POSTCONDITION(lastIndexInParent == mLastContentOffset, "bad last content offset");
-#endif
-
-#ifdef NS_DEBUG
- VerifyLastIsComplete();
-#endif
-#ifdef NOISY
- ListTag(stdout);
- printf(": reflow mapped %sok (childCount=%d) [%d,%d,%c]\n",
- (result ? "" : "NOT "),
- mChildCount,
- mFirstContentOffset, mLastContentOffset,
- (mLastContentIsComplete ? 'T' : 'F'));
-#ifdef NOISY_FLOW
- {
- nsTableFrame* flow = (nsTableFrame*) mNextInFlow;
- while (flow != 0) {
- printf(" %p: [%d,%d,%c]\n",
- flow, flow->mFirstContentOffset, flow->mLastContentOffset,
- (flow->mLastContentIsComplete ? 'T' : 'F'));
- flow = (nsTableFrame*) flow->mNextInFlow;
- }
- }
-#endif
-#endif
return result;
}
@@ -2147,43 +2050,11 @@ PRBool nsTableFrame::PullUpChildren(nsIPresContext* aPresContext,
InnerTableReflowState& aState,
nsSize* aMaxElementSize)
{
-#ifdef NS_DEBUG
- VerifyLastIsComplete();
-#endif
-#ifdef NOISY
- ListTag(stdout);
- printf(": pullup (childCount=%d) [%d,%d,%c]\n",
- mChildCount,
- mFirstContentOffset, mLastContentOffset,
- (mLastContentIsComplete ? 'T' : 'F'));
-#ifdef NOISY_FLOW
- {
- nsTableFrame* flow = (nsTableFrame*) mNextInFlow;
- while (flow != 0) {
- printf(" %p: [%d,%d,%c]\n",
- flow, flow->mFirstContentOffset, flow->mLastContentOffset,
- (flow->mLastContentIsComplete ? 'T' : 'F'));
- flow = (nsTableFrame*) flow->mNextInFlow;
- }
- }
-#endif
-#endif
- nsTableFrame* nextInFlow = (nsTableFrame*)mNextInFlow;
+ nsTableFrame* nextInFlow = (nsTableFrame*)mNextInFlow;
nsSize kidMaxElementSize(0,0);
nsSize* pKidMaxElementSize = (nsnull != aMaxElementSize) ? &kidMaxElementSize : nsnull;
-#ifdef NS_DEBUG
- PRInt32 kidIndex = NextChildOffset();
-#endif
nsIFrame* prevKidFrame = LastFrame(mFirstChild);
-
- // This will hold the prevKidFrame's mLastContentIsComplete
- // status. If we have to push the frame that follows prevKidFrame
- // then this will become our mLastContentIsComplete state. Since
- // prevKidFrame is initially our last frame, it's completion status
- // is our mLastContentIsComplete value.
- PRBool prevLastContentIsComplete = mLastContentIsComplete;
-
- PRBool result = PR_TRUE;
+ PRBool result = PR_TRUE;
while (nsnull != nextInFlow) {
nsReflowMetrics kidSize(pKidMaxElementSize);
@@ -2219,7 +2090,6 @@ PRBool nsTableFrame::PullUpChildren(nsIPresContext* aPresContext,
if ((kidFrameSize.height > aState.availSize.height) &&
NS_FRAME_IS_NOT_SPLITTABLE(kidIsSplittable)) {
result = PR_FALSE;
- mLastContentIsComplete = prevLastContentIsComplete;
break;
}
nsReflowState kidReflowState(kidFrame, aState.reflowState, aState.availSize,
@@ -2232,7 +2102,6 @@ PRBool nsTableFrame::PullUpChildren(nsIPresContext* aPresContext,
// The child is too wide to fit in the available space, and it's
// not our first child
result = PR_FALSE;
- mLastContentIsComplete = prevLastContentIsComplete;
break;
}
@@ -2257,13 +2126,6 @@ PRBool nsTableFrame::PullUpChildren(nsIPresContext* aPresContext,
// Remove the frame from its current parent
kidFrame->GetNextSibling(nextInFlow->mFirstChild);
- nextInFlow->mChildCount--;
- // Update the next-in-flows first content offset
- if (nsnull != nextInFlow->mFirstChild) {
- PRInt32 contentIndex;
- nextInFlow->mFirstChild->GetContentIndex(contentIndex);
- nextInFlow->SetFirstContentOffset(contentIndex);
- }
// Link the frame into our list of children
kidFrame->SetGeometricParent(this);
@@ -2275,21 +2137,13 @@ PRBool nsTableFrame::PullUpChildren(nsIPresContext* aPresContext,
}
if (nsnull == prevKidFrame) {
mFirstChild = kidFrame;
- PRInt32 contentIndex;
- kidFrame->GetContentIndex(contentIndex);
- SetFirstContentOffset(contentIndex);
} else {
prevKidFrame->SetNextSibling(kidFrame);
}
kidFrame->SetNextSibling(nsnull);
- mChildCount++;
// Remember where we just were in case we end up pushing children
prevKidFrame = kidFrame;
- prevLastContentIsComplete = mLastContentIsComplete;
-
- // Is the child we just pulled up complete?
- mLastContentIsComplete = PRBool(NS_FRAME_IS_COMPLETE(status));
if (NS_FRAME_IS_NOT_COMPLETE(status)) {
// No the child isn't complete
nsIFrame* kidNextInFlow;
@@ -2311,16 +2165,10 @@ PRBool nsTableFrame::PullUpChildren(nsIPresContext* aPresContext,
// it to the next-in-flow. This ensures the next-in-flow's
// content offsets and child count are set properly. Note that
// we can safely assume that the continuation is complete so
- // we pass PR_TRUE into PushChidren in case our next-in-flow
- // was just drained and now needs to know it's
- // mLastContentIsComplete state.
+ // we pass PR_TRUE into PushChidren
kidFrame->SetNextSibling(continuingFrame);
PushChildren(continuingFrame, kidFrame, PR_TRUE);
-
- // After we push the continuation frame we don't need to fuss
- // with mLastContentIsComplete beause the continuation frame
- // is no longer on *our* list.
}
// If the child isn't complete then it means that we've used up
@@ -2330,39 +2178,6 @@ PRBool nsTableFrame::PullUpChildren(nsIPresContext* aPresContext,
}
}
- // Update our last content offset
- if (nsnull != prevKidFrame) {
- NS_ASSERTION(IsLastChild(prevKidFrame), "bad last child");
- PRInt32 contentIndex;
- prevKidFrame->GetContentIndex(contentIndex);
- SetLastContentOffset(contentIndex);
- }
-
- // We need to make sure the first content offset is correct for any empty
- // next-in-flow frames (frames where we pulled up all the child frames)
- nextInFlow = (nsTableFrame*)mNextInFlow;
- if ((nsnull != nextInFlow) && (nsnull == nextInFlow->mFirstChild)) {
- // We have at least one empty frame. Did we succesfully pull up all the
- // child frames?
- if (PR_FALSE == result) {
- // No, so we need to adjust the first content offset of all the empty
- // frames
- AdjustOffsetOfEmptyNextInFlows();
-#ifdef NS_DEBUG
- } else {
- // Yes, we successfully pulled up all the child frames which means all
- // the next-in-flows must be empty. Do a sanity check
- while (nsnull != nextInFlow) {
- NS_ASSERTION(nsnull == nextInFlow->mFirstChild, "non-empty next-in-flow");
- nextInFlow->GetNextInFlow((nsIFrame*&)nextInFlow);
- }
-#endif
- }
- }
-
-#ifdef NS_DEBUG
- VerifyLastIsComplete();
-#endif
return result;
}
@@ -3389,7 +3204,7 @@ NS_METHOD nsTableFrame::List(FILE* out, PRInt32 aIndent, nsIListFilter *aFilter)
}
}
// Output the children
- if (mChildCount > 0) {
+ if (nsnull != mFirstChild) {
if (PR_TRUE==outputMe)
{
if (0 != mState) {
diff --git a/mozilla/layout/tables/nsTableOuterFrame.cpp b/mozilla/layout/tables/nsTableOuterFrame.cpp
index b5e2c67ffca..bbd1c9ad211 100644
--- a/mozilla/layout/tables/nsTableOuterFrame.cpp
+++ b/mozilla/layout/tables/nsTableOuterFrame.cpp
@@ -107,12 +107,10 @@ nsTableOuterFrame::nsTableOuterFrame(nsIContent* aContent, nsIFrame* aParentFram
NS_IMETHODIMP nsTableOuterFrame::Init(nsIPresContext& aPresContext, nsIFrame* aChildList)
{
mFirstChild = aChildList;
- mChildCount = LengthOf(mFirstChild);
- NS_ASSERTION(mChildCount > 0, "bad child list");
// Set our internal member data
mInnerTableFrame = (nsTableFrame*)mFirstChild;
- if (2 == mChildCount) {
+ if (2 == LengthOf(mFirstChild)) {
mFirstChild->GetNextSibling(mCaptionFrame);
}
@@ -616,7 +614,6 @@ nsresult nsTableOuterFrame::CreateChildFrames(nsIPresContext* aPresContext)
// Add it to the list of child frames
mFirstChild = mInnerTableFrame;
- mChildCount++;
// Now create the caption frame, prepending a top caption and appending a
// bottom caption
@@ -666,7 +663,6 @@ nsresult nsTableOuterFrame::CreateChildFrames(nsIPresContext* aPresContext)
mCaptionFrame->SetNextSibling(mFirstChild);
mFirstChild = mCaptionFrame;
}
- mChildCount++;
break;
}
}
@@ -700,23 +696,6 @@ nsTableOuterFrame::PrepareContinuingFrame(nsIPresContext& aPresContext,
{
// Append the continuing frame to the flow
aContFrame->AppendToFlow(this);
-
- // Initialize it's content offsets. Note that we assume for now that
- // the continuingFrame will map the remainder of the content and
- // that therefore mLastContentIsComplete will be true.
- PRInt32 nextOffset;
- if (mChildCount > 0) {
- nextOffset = mLastContentOffset;
- if (mLastContentIsComplete) {
- nextOffset++;
- }
- } else {
- nextOffset = mFirstContentOffset;
- }
-
- aContFrame->SetFirstContentOffset(nextOffset);
- aContFrame->SetLastContentOffset(nextOffset);
- aContFrame->SetLastContentIsComplete(PR_TRUE);
aContFrame->SetStyleContext(&aPresContext, aStyleContext);
}
@@ -781,26 +760,6 @@ PRBool nsTableOuterFrame::DeleteChildsNextInFlow(nsIPresContext& aPresContext, n
// Take the next-in-flow out of the parent's child list
if (parent->mFirstChild == nextInFlow) {
nextInFlow->GetNextSibling(parent->mFirstChild);
- if (nsnull != parent->mFirstChild) {
- PRInt32 contentIndex;
- parent->mFirstChild->GetContentIndex(contentIndex);
- parent->SetFirstContentOffset(contentIndex);
- if (parent->IsPseudoFrame()) {
- // Tell the parent's parent to update its content offsets
- nsContainerFrame* pp = (nsContainerFrame*) parent->mGeometricParent;
- pp->PropagateContentOffsets(parent, parent->mFirstContentOffset,
- parent->mLastContentOffset,
- parent->mLastContentIsComplete);
- }
- }
-
- // When a parent loses it's last child and that last child is a
- // pseudo-frame then the parent's content offsets are now wrong.
- // However, we know that the parent will eventually be reflowed
- // in one of two ways: it will either get a chance to pullup
- // children or it will be deleted because it's prev-in-flow
- // (e.g. this) is complete. In either case, the content offsets
- // will be repaired.
} else {
nsIFrame* nextSibling;
@@ -820,7 +779,6 @@ PRBool nsTableOuterFrame::DeleteChildsNextInFlow(nsIPresContext& aPresContext, n
// Delete the next-in-flow frame and adjust it's parent's child count
nextInFlow->DeleteFrame(aPresContext);
- parent->mChildCount--;
#ifdef NS_DEBUG
aChild->GetNextInFlow(nextInFlow);
@@ -918,7 +876,7 @@ NS_METHOD nsTableOuterFrame::List(FILE* out, PRInt32 aIndent, nsIListFilter *aFi
fputs("\n", out);
}
// Output the children
- if (mChildCount > 0) {
+ if (nsnull != mFirstChild) {
if (PR_TRUE==outputMe)
{
if (0 != mState) {
diff --git a/mozilla/layout/tables/nsTableRowFrame.cpp b/mozilla/layout/tables/nsTableRowFrame.cpp
index e0c77ac9029..8791b62415e 100644
--- a/mozilla/layout/tables/nsTableRowFrame.cpp
+++ b/mozilla/layout/tables/nsTableRowFrame.cpp
@@ -100,7 +100,6 @@ NS_IMETHODIMP
nsTableRowFrame::Init(nsIPresContext& aPresContext, nsIFrame* aChildList)
{
mFirstChild = aChildList;
- mChildCount = LengthOf(mFirstChild);
return NS_OK;
}
@@ -1027,7 +1026,7 @@ NS_METHOD nsTableRowFrame::List(FILE* out, PRInt32 aIndent, nsIListFilter *aFilt
fputs("\n", out);
}
// Output the children
- if (mChildCount > 0) {
+ if (nsnull != mFirstChild) {
if (PR_TRUE==outputMe)
{
if (0 != mState) {
diff --git a/mozilla/layout/tables/nsTableRowGroupFrame.cpp b/mozilla/layout/tables/nsTableRowGroupFrame.cpp
index a6245e40294..733dd858401 100644
--- a/mozilla/layout/tables/nsTableRowGroupFrame.cpp
+++ b/mozilla/layout/tables/nsTableRowGroupFrame.cpp
@@ -130,14 +130,6 @@ NS_IMETHODIMP
nsTableRowGroupFrame::Init(nsIPresContext& aPresContext, nsIFrame* aChildList)
{
mFirstChild = aChildList;
- mChildCount = LengthOf(mFirstChild);
-
- // XXX TEMP CODE UNTIL nsContainerFrame GOES AWAY...
- nsIFrame* lastChild = LastFrame(mFirstChild);
- if (nsnull != lastChild) {
- lastChild->GetContentIndex(mLastContentOffset);
- }
-
return NS_OK;
}
@@ -268,36 +260,8 @@ PRBool nsTableRowGroupFrame::ReflowMappedChildren( nsIPresContext* aPresCon
RowGroupReflowState& aState,
nsSize* aMaxElementSize)
{
-#ifdef NS_DEBUG
- VerifyLastIsComplete();
-#endif
-#ifdef NOISY
- ListTag(stdout);
- printf(": reflow mapped (childCount=%d) [%d,%d,%c]\n",
- mChildCount,
- mFirstContentOffset, mLastContentOffset,
- (mLastContentIsComplete ? 'T' : 'F'));
-#ifdef NOISY_FLOW
- {
- nsTableRowGroupFrame* flow = (nsTableRowGroupFrame*) mNextInFlow;
- while (flow != 0) {
- printf(" %p: [%d,%d,%c]\n",
- flow, flow->mFirstContentOffset, flow->mLastContentOffset,
- (flow->mLastContentIsComplete ? 'T' : 'F'));
- flow = (nsTableRowGroupFrame*) flow->mNextInFlow;
- }
- }
-#endif
-#endif
NS_PRECONDITION(nsnull != mFirstChild, "no children");
- PRInt32 childCount = 0;
nsIFrame* prevKidFrame = nsnull;
-
- // Remember our original mLastContentIsComplete so that if we end up
- // having to push children, we have the correct value to hand to
- // PushChildren.
- PRBool lastContentIsComplete = mLastContentIsComplete;
-
nsSize kidMaxElementSize;
nsSize* pKidMaxElementSize = (nsnull != aMaxElementSize) ? &kidMaxElementSize : nsnull;
PRBool result = PR_TRUE;
@@ -354,17 +318,7 @@ PRBool nsTableRowGroupFrame::ReflowMappedChildren( nsIPresContext* aPresCon
//
// Note that if the width is too big that's okay and we allow the
// child to extend horizontally outside of the reflow area
-
- // Since we are giving the next-in-flow our last child, we
- // give it our original mLastContentIsComplete, too (in case we
- // are pushing into an empty next-in-flow)
- PushChildren(kidFrame, prevKidFrame, lastContentIsComplete);
- PRInt32 contentIndex;
- prevKidFrame->GetContentIndex(contentIndex);
- SetLastContentOffset(contentIndex);
-
- // Our mLastContentIsComplete was already set by the last kid we
- // reflowed reflow's status
+ PushChildren(kidFrame, prevKidFrame, PR_TRUE);
result = PR_FALSE;
break;
}
@@ -378,14 +332,10 @@ PRBool nsTableRowGroupFrame::ReflowMappedChildren( nsIPresContext* aPresCon
} else {
aState.prevMaxPosBottomMargin = bottomMargin;
}
- childCount++;
// Remember where we just were in case we end up pushing children
prevKidFrame = kidFrame;
- // Update mLastContentIsComplete now that this kid fits
- mLastContentIsComplete = NS_FRAME_IS_COMPLETE(status);
-
/* Row groups should not create continuing frames for rows
* unless they absolutely have to!
* check to see if this is absolutely necessary (with new params from troy)
@@ -398,7 +348,6 @@ PRBool nsTableRowGroupFrame::ReflowMappedChildren( nsIPresContext* aPresCon
nsIFrame* kidNextInFlow;
kidFrame->GetNextInFlow(kidNextInFlow);
- PRBool lastContentIsComplete = mLastContentIsComplete;
if (nsnull == kidNextInFlow) {
// No the child isn't complete, and it doesn't have a next in flow so
// create a continuing frame. This hooks the child into the flow.
@@ -415,12 +364,6 @@ PRBool nsTableRowGroupFrame::ReflowMappedChildren( nsIPresContext* aPresCon
kidFrame->GetNextSibling(nextSib);
continuingFrame->SetNextSibling(nextSib);
kidFrame->SetNextSibling(continuingFrame);
- if (nsnull == nextSib) {
- // Assume that the continuation frame we just created is
- // complete, for now. It will get reflowed by our
- // next-in-flow (we are going to push it now)
- lastContentIsComplete = PR_TRUE;
- }
}
// We've used up all of our available space so push the remaining
// children to the next-in-flow
@@ -428,10 +371,7 @@ PRBool nsTableRowGroupFrame::ReflowMappedChildren( nsIPresContext* aPresCon
kidFrame->GetNextSibling(nextSibling);
if (nsnull != nextSibling) {
- PushChildren(nextSibling, kidFrame, lastContentIsComplete);
- PRInt32 contentIndex;
- prevKidFrame->GetContentIndex(contentIndex);
- SetLastContentOffset(contentIndex);
+ PushChildren(nextSibling, kidFrame, PR_TRUE);
}
result = PR_FALSE;
break;
@@ -449,40 +389,6 @@ PRBool nsTableRowGroupFrame::ReflowMappedChildren( nsIPresContext* aPresCon
}
// Update the child count
- mChildCount = childCount;
-
-#ifdef NS_DEBUG
- NS_POSTCONDITION(LengthOf(mFirstChild) == mChildCount, "bad child count");
-
- nsIFrame* lastChild = LastFrame(mFirstChild);
- PRInt32 lastIndexInParent;
-
- lastChild->GetContentIndex(lastIndexInParent);
- NS_POSTCONDITION(lastIndexInParent == mLastContentOffset, "bad last content offset");
-#endif
-
-#ifdef NS_DEBUG
- VerifyLastIsComplete();
-#endif
-#ifdef NOISY
- ListTag(stdout);
- printf(": reflow mapped %sok (childCount=%d) [%d,%d,%c]\n",
- (result ? "" : "NOT "),
- mChildCount,
- mFirstContentOffset, mLastContentOffset,
- (mLastContentIsComplete ? 'T' : 'F'));
-#ifdef NOISY_FLOW
- {
- nsTableRowGroupFrame* flow = (nsTableRowGroupFrame*) mNextInFlow;
- while (flow != 0) {
- printf(" %p: [%d,%d,%c]\n",
- flow, flow->mFirstContentOffset, flow->mLastContentOffset,
- (flow->mLastContentIsComplete ? 'T' : 'F'));
- flow = (nsTableRowGroupFrame*) flow->mNextInFlow;
- }
- }
-#endif
-#endif
return result;
}
@@ -498,43 +404,11 @@ PRBool nsTableRowGroupFrame::PullUpChildren(nsIPresContext* aPresContext,
RowGroupReflowState& aState,
nsSize* aMaxElementSize)
{
-#ifdef NS_DEBUG
- VerifyLastIsComplete();
-#endif
-#ifdef NOISY
- ListTag(stdout);
- printf(": pullup (childCount=%d) [%d,%d,%c]\n",
- mChildCount,
- mFirstContentOffset, mLastContentOffset,
- (mLastContentIsComplete ? 'T' : 'F'));
-#ifdef NOISY_FLOW
- {
- nsTableRowGroupFrame* flow = (nsTableRowGroupFrame*) mNextInFlow;
- while (flow != 0) {
- printf(" %p: [%d,%d,%c]\n",
- flow, flow->mFirstContentOffset, flow->mLastContentOffset,
- (flow->mLastContentIsComplete ? 'T' : 'F'));
- flow = (nsTableRowGroupFrame*) flow->mNextInFlow;
- }
- }
-#endif
-#endif
nsTableRowGroupFrame* nextInFlow = (nsTableRowGroupFrame*)mNextInFlow;
nsSize kidMaxElementSize;
nsSize* pKidMaxElementSize = (nsnull != aMaxElementSize) ? &kidMaxElementSize : nsnull;
-#ifdef NS_DEBUG
- PRInt32 kidIndex = NextChildOffset();
-#endif
nsIFrame* prevKidFrame = LastFrame(mFirstChild);
-
- // This will hold the prevKidFrame's mLastContentIsComplete
- // status. If we have to push the frame that follows prevKidFrame
- // then this will become our mLastContentIsComplete state. Since
- // prevKidFrame is initially our last frame, it's completion status
- // is our mLastContentIsComplete value.
- PRBool prevLastContentIsComplete = mLastContentIsComplete;
-
- PRBool result = PR_TRUE;
+ PRBool result = PR_TRUE;
while (nsnull != nextInFlow) {
nsReflowMetrics kidSize(pKidMaxElementSize);
@@ -571,7 +445,6 @@ PRBool nsTableRowGroupFrame::PullUpChildren(nsIPresContext* aPresContext,
if ((kidFrameSize.height > aState.availSize.height) &&
NS_FRAME_IS_NOT_SPLITTABLE(kidIsSplittable)) {
result = PR_FALSE;
- mLastContentIsComplete = prevLastContentIsComplete;
break;
}
nsReflowState kidReflowState(kidFrame, aState.reflowState, aState.availSize,
@@ -584,7 +457,6 @@ PRBool nsTableRowGroupFrame::PullUpChildren(nsIPresContext* aPresContext,
// The child is too wide to fit in the available space, and it's
// not our first child
result = PR_FALSE;
- mLastContentIsComplete = prevLastContentIsComplete;
break;
}
@@ -597,13 +469,6 @@ PRBool nsTableRowGroupFrame::PullUpChildren(nsIPresContext* aPresContext,
// Remove the frame from its current parent
kidFrame->GetNextSibling(nextInFlow->mFirstChild);
- nextInFlow->mChildCount--;
- // Update the next-in-flows first content offset
- if (nsnull != nextInFlow->mFirstChild) {
- PRInt32 contentIndex;
- nextInFlow->mFirstChild->GetContentIndex(contentIndex);
- nextInFlow->SetFirstContentOffset(contentIndex);
- }
// Link the frame into our list of children
kidFrame->SetGeometricParent(this);
@@ -615,21 +480,15 @@ PRBool nsTableRowGroupFrame::PullUpChildren(nsIPresContext* aPresContext,
}
if (nsnull == prevKidFrame) {
mFirstChild = kidFrame;
- PRInt32 contentIndex;
- kidFrame->GetContentIndex(contentIndex);
- SetFirstContentOffset(contentIndex);
} else {
prevKidFrame->SetNextSibling(kidFrame);
}
kidFrame->SetNextSibling(nsnull);
- mChildCount++;
// Remember where we just were in case we end up pushing children
prevKidFrame = kidFrame;
- prevLastContentIsComplete = mLastContentIsComplete;
// Is the child we just pulled up complete?
- mLastContentIsComplete = NS_FRAME_IS_COMPLETE(status);
if (NS_FRAME_IS_NOT_COMPLETE(status)) {
// No the child isn't complete
nsIFrame* kidNextInFlow;
@@ -651,16 +510,10 @@ PRBool nsTableRowGroupFrame::PullUpChildren(nsIPresContext* aPresContext,
// it to the next-in-flow. This ensures the next-in-flow's
// content offsets and child count are set properly. Note that
// we can safely assume that the continuation is complete so
- // we pass PR_TRUE into PushChidren in case our next-in-flow
- // was just drained and now needs to know it's
- // mLastContentIsComplete state.
+ // we pass PR_TRUE into PushChidren
kidFrame->SetNextSibling(continuingFrame);
PushChildren(continuingFrame, kidFrame, PR_TRUE);
-
- // After we push the continuation frame we don't need to fuss
- // with mLastContentIsComplete beause the continuation frame
- // is no longer on *our* list.
}
// If the child isn't complete then it means that we've used up
@@ -673,9 +526,6 @@ PRBool nsTableRowGroupFrame::PullUpChildren(nsIPresContext* aPresContext,
// Update our last content offset
if (nsnull != prevKidFrame) {
NS_ASSERTION(IsLastChild(prevKidFrame), "bad last child");
- PRInt32 contentIndex;
- prevKidFrame->GetContentIndex(contentIndex);
- SetLastContentOffset(contentIndex);
}
// We need to make sure the first content offset is correct for any empty
@@ -700,29 +550,6 @@ PRBool nsTableRowGroupFrame::PullUpChildren(nsIPresContext* aPresContext,
}
}
-#ifdef NS_DEBUG
- VerifyLastIsComplete();
-#endif
-
-#ifdef NOISY
- ListTag(stdout);
- printf(": pullup %sok (childCount=%d) [%d,%d,%c]\n",
- (result ? "" : "NOT "),
- mChildCount,
- mFirstContentOffset, mLastContentOffset,
- (mLastContentIsComplete ? 'T' : 'F'));
-#ifdef NOISY_FLOW
- {
- nsTableRowGroupFrame* flow = (nsTableRowGroupFrame*) mNextInFlow;
- while (flow != 0) {
- printf(" %p: [%d,%d,%c]\n",
- flow, flow->mFirstContentOffset, flow->mLastContentOffset,
- (flow->mLastContentIsComplete ? 'T' : 'F'));
- flow = (nsTableRowGroupFrame*) flow->mNextInFlow;
- }
- }
-#endif
-#endif
return result;
}
@@ -1134,7 +961,7 @@ NS_METHOD nsTableRowGroupFrame::List(FILE* out, PRInt32 aIndent, nsIListFilter *
}
// Output the children
- if (mChildCount > 0) {
+ if (nsnull != mFirstChild) {
if (PR_TRUE==outputMe)
{
if (0 != mState) {