diff --git a/layout/html/table/src/nsTableOuterFrame.cpp b/layout/html/table/src/nsTableOuterFrame.cpp index 96dda030ae9..de21aa19799 100644 --- a/layout/html/table/src/nsTableOuterFrame.cpp +++ b/layout/html/table/src/nsTableOuterFrame.cpp @@ -111,7 +111,6 @@ nsTableOuterFrame::nsTableOuterFrame(nsIContent* aContent, nsIFrame* aParentFram mBottomCaptions(nsnull), mMinCaptionWidth(0), mMaxCaptionWidth(0), - mFirstPassValid(PR_FALSE), mDesiredSize(nsnull) { } @@ -146,16 +145,6 @@ PRBool nsTableOuterFrame::NeedsReflow(const nsSize& aMaxSize) return result; } -PRBool nsTableOuterFrame::IsFirstPassValid() -{ - return mFirstPassValid; -} - -void nsTableOuterFrame::SetFirstPassValid(PRBool aValidState) -{ - mFirstPassValid = aValidState; -} - // Recover the reflow state to what it should be if aKidFrame is about // to be reflowed nsresult nsTableOuterFrame::RecoverState(OuterTableReflowState& aState, @@ -349,11 +338,12 @@ NS_METHOD nsTableOuterFrame::Reflow(nsIPresContext* aPresContext, // PreReflowCheck(); #endif - // Initialize out parameter + // Initialize out parameters if (nsnull != aDesiredSize.maxElementSize) { aDesiredSize.maxElementSize->width = 0; aDesiredSize.maxElementSize->height = 0; } + aStatus = NS_FRAME_COMPLETE; // Initialize our local reflow state OuterTableReflowState state(aPresContext, aReflowState); @@ -362,22 +352,25 @@ NS_METHOD nsTableOuterFrame::Reflow(nsIPresContext* aPresContext, IncrementalReflow(aPresContext, state, aDesiredSize, aReflowState, aStatus); } else { - PRBool reflowMappedOK = PR_TRUE; - PRBool isInitialReflow = PR_FALSE; - - aStatus = NS_FRAME_COMPLETE; - - // Set up our kids. They're already present, on an overflow list, - // or there are none so we'll create them now - MoveOverflowToChildList(); - if (nsnull==mFirstChild) { - CreateChildFrames(aPresContext); - isInitialReflow = PR_TRUE; - } - if (nsnull!=mPrevInFlow && nsnull==mInnerTableFrame) - { // if I am a continuing frame, my inner table is my prev-in-flow's mInnerTableFrame's next-in-flow - CreateInnerTableFrame(aPresContext); + if (eReflowReason_Initial == aReflowState.reason) { + // Set up our kids. They're already present, on an overflow list, + // or there are none so we'll create them now + MoveOverflowToChildList(); + if (nsnull==mFirstChild) { + CreateChildFrames(aPresContext); + } + // XXX Add a comment on why mInnerTableFrame would be nsnull at this point? + // You would think that the call to CreateChildFrames() would have created + // the inner table frame... + if (nsnull!=mPrevInFlow && nsnull==mInnerTableFrame) + { // if I am a continuing frame, my inner table is my prev-in-flow's mInnerTableFrame's next-in-flow + CreateInnerTableFrame(aPresContext); + } + + // lay out captions pass 1 + aStatus = ResizeReflowCaptionsPass1(aPresContext, state, PR_TRUE); } + // at this point, we must have at least one child frame, and we must have an inner table frame NS_ASSERTION(nsnull!=mFirstChild, "no children"); NS_ASSERTION(nsnull!=mInnerTableFrame, "no mInnerTableFrame"); @@ -387,14 +380,6 @@ NS_METHOD nsTableOuterFrame::Reflow(nsIPresContext* aPresContext, return NS_OK; } - // lay out captions pass 1, if necessary - if (PR_FALSE==IsFirstPassValid()) - { - mFirstPassValid = PR_TRUE; - aStatus = ResizeReflowCaptionsPass1(aPresContext, state, isInitialReflow); - - } - // lay out inner table, if required if (PR_FALSE==mInnerTableFrame->IsFirstPassValid()) { @@ -427,6 +412,7 @@ NS_METHOD nsTableOuterFrame::Reflow(nsIPresContext* aPresContext, state.innerTableMaxSize.height = aReflowState.maxSize.height; // Reflow the child frames + PRBool reflowMappedOK = PR_TRUE; if (nsnull != mFirstChild) { reflowMappedOK = ReflowMappedChildren(aPresContext, state, aDesiredSize.maxElementSize); if (PR_FALSE == reflowMappedOK) { @@ -1404,7 +1390,6 @@ nsTableOuterFrame::CreateContinuingFrame(nsIPresContext* aPresContext, return NS_ERROR_OUT_OF_MEMORY; } PrepareContinuingFrame(aPresContext, aParent, aStyleContext, cf); - cf->SetFirstPassValid(PR_TRUE); if (PR_TRUE==gsDebug) printf("nsTableOuterFrame::CCF parent = %p, this=%p, cf=%p\n", aParent, this, cf); aContinuingFrame = cf; diff --git a/layout/html/table/src/nsTableOuterFrame.h b/layout/html/table/src/nsTableOuterFrame.h index addf9245e10..59667ea5371 100644 --- a/layout/html/table/src/nsTableOuterFrame.h +++ b/layout/html/table/src/nsTableOuterFrame.h @@ -109,17 +109,6 @@ protected: */ virtual PRBool NeedsReflow(const nsSize& aMaxSize); - /** returns PR_TRUE if the data obtained from the first reflow pass - * is cached and still valid (ie, no content or style change notifications.) - */ - virtual PRBool IsFirstPassValid(); - - /** setter for mFirstPassValid. - * should be called with PR_FALSE when: - * content changes, style changes, or context changes - */ - virtual void SetFirstPassValid(PRBool aValidState); - /** create all child frames for this table */ virtual void CreateChildFrames(nsIPresContext* aPresContext); @@ -254,9 +243,6 @@ private: nsReflowMetrics mDesiredSize; nsSize mMaxElementSize; - /** we can skip the first pass on captions if mFirstPassValid is true */ - PRBool mFirstPassValid; - }; diff --git a/layout/tables/nsTableOuterFrame.cpp b/layout/tables/nsTableOuterFrame.cpp index 96dda030ae9..de21aa19799 100644 --- a/layout/tables/nsTableOuterFrame.cpp +++ b/layout/tables/nsTableOuterFrame.cpp @@ -111,7 +111,6 @@ nsTableOuterFrame::nsTableOuterFrame(nsIContent* aContent, nsIFrame* aParentFram mBottomCaptions(nsnull), mMinCaptionWidth(0), mMaxCaptionWidth(0), - mFirstPassValid(PR_FALSE), mDesiredSize(nsnull) { } @@ -146,16 +145,6 @@ PRBool nsTableOuterFrame::NeedsReflow(const nsSize& aMaxSize) return result; } -PRBool nsTableOuterFrame::IsFirstPassValid() -{ - return mFirstPassValid; -} - -void nsTableOuterFrame::SetFirstPassValid(PRBool aValidState) -{ - mFirstPassValid = aValidState; -} - // Recover the reflow state to what it should be if aKidFrame is about // to be reflowed nsresult nsTableOuterFrame::RecoverState(OuterTableReflowState& aState, @@ -349,11 +338,12 @@ NS_METHOD nsTableOuterFrame::Reflow(nsIPresContext* aPresContext, // PreReflowCheck(); #endif - // Initialize out parameter + // Initialize out parameters if (nsnull != aDesiredSize.maxElementSize) { aDesiredSize.maxElementSize->width = 0; aDesiredSize.maxElementSize->height = 0; } + aStatus = NS_FRAME_COMPLETE; // Initialize our local reflow state OuterTableReflowState state(aPresContext, aReflowState); @@ -362,22 +352,25 @@ NS_METHOD nsTableOuterFrame::Reflow(nsIPresContext* aPresContext, IncrementalReflow(aPresContext, state, aDesiredSize, aReflowState, aStatus); } else { - PRBool reflowMappedOK = PR_TRUE; - PRBool isInitialReflow = PR_FALSE; - - aStatus = NS_FRAME_COMPLETE; - - // Set up our kids. They're already present, on an overflow list, - // or there are none so we'll create them now - MoveOverflowToChildList(); - if (nsnull==mFirstChild) { - CreateChildFrames(aPresContext); - isInitialReflow = PR_TRUE; - } - if (nsnull!=mPrevInFlow && nsnull==mInnerTableFrame) - { // if I am a continuing frame, my inner table is my prev-in-flow's mInnerTableFrame's next-in-flow - CreateInnerTableFrame(aPresContext); + if (eReflowReason_Initial == aReflowState.reason) { + // Set up our kids. They're already present, on an overflow list, + // or there are none so we'll create them now + MoveOverflowToChildList(); + if (nsnull==mFirstChild) { + CreateChildFrames(aPresContext); + } + // XXX Add a comment on why mInnerTableFrame would be nsnull at this point? + // You would think that the call to CreateChildFrames() would have created + // the inner table frame... + if (nsnull!=mPrevInFlow && nsnull==mInnerTableFrame) + { // if I am a continuing frame, my inner table is my prev-in-flow's mInnerTableFrame's next-in-flow + CreateInnerTableFrame(aPresContext); + } + + // lay out captions pass 1 + aStatus = ResizeReflowCaptionsPass1(aPresContext, state, PR_TRUE); } + // at this point, we must have at least one child frame, and we must have an inner table frame NS_ASSERTION(nsnull!=mFirstChild, "no children"); NS_ASSERTION(nsnull!=mInnerTableFrame, "no mInnerTableFrame"); @@ -387,14 +380,6 @@ NS_METHOD nsTableOuterFrame::Reflow(nsIPresContext* aPresContext, return NS_OK; } - // lay out captions pass 1, if necessary - if (PR_FALSE==IsFirstPassValid()) - { - mFirstPassValid = PR_TRUE; - aStatus = ResizeReflowCaptionsPass1(aPresContext, state, isInitialReflow); - - } - // lay out inner table, if required if (PR_FALSE==mInnerTableFrame->IsFirstPassValid()) { @@ -427,6 +412,7 @@ NS_METHOD nsTableOuterFrame::Reflow(nsIPresContext* aPresContext, state.innerTableMaxSize.height = aReflowState.maxSize.height; // Reflow the child frames + PRBool reflowMappedOK = PR_TRUE; if (nsnull != mFirstChild) { reflowMappedOK = ReflowMappedChildren(aPresContext, state, aDesiredSize.maxElementSize); if (PR_FALSE == reflowMappedOK) { @@ -1404,7 +1390,6 @@ nsTableOuterFrame::CreateContinuingFrame(nsIPresContext* aPresContext, return NS_ERROR_OUT_OF_MEMORY; } PrepareContinuingFrame(aPresContext, aParent, aStyleContext, cf); - cf->SetFirstPassValid(PR_TRUE); if (PR_TRUE==gsDebug) printf("nsTableOuterFrame::CCF parent = %p, this=%p, cf=%p\n", aParent, this, cf); aContinuingFrame = cf; diff --git a/layout/tables/nsTableOuterFrame.h b/layout/tables/nsTableOuterFrame.h index addf9245e10..59667ea5371 100644 --- a/layout/tables/nsTableOuterFrame.h +++ b/layout/tables/nsTableOuterFrame.h @@ -109,17 +109,6 @@ protected: */ virtual PRBool NeedsReflow(const nsSize& aMaxSize); - /** returns PR_TRUE if the data obtained from the first reflow pass - * is cached and still valid (ie, no content or style change notifications.) - */ - virtual PRBool IsFirstPassValid(); - - /** setter for mFirstPassValid. - * should be called with PR_FALSE when: - * content changes, style changes, or context changes - */ - virtual void SetFirstPassValid(PRBool aValidState); - /** create all child frames for this table */ virtual void CreateChildFrames(nsIPresContext* aPresContext); @@ -254,9 +243,6 @@ private: nsReflowMetrics mDesiredSize; nsSize mMaxElementSize; - /** we can skip the first pass on captions if mFirstPassValid is true */ - PRBool mFirstPassValid; - };