diff --git a/mozilla/layout/html/base/src/nsBodyFrame.cpp b/mozilla/layout/html/base/src/nsBodyFrame.cpp index f10275c8fb9..9f8d7ecc349 100644 --- a/mozilla/layout/html/base/src/nsBodyFrame.cpp +++ b/mozilla/layout/html/base/src/nsBodyFrame.cpp @@ -197,26 +197,8 @@ NS_METHOD nsBodyFrame::ResizeReflow(nsIPresContext* aPresContext, SetLastContentOffset(mFirstChild); // Return our desired size. Take into account the y-most floater -#if 0 - aDesiredSize.width = desiredRect.XMost(); - aDesiredSize.height = PR_MAX(desiredRect.YMost(), mSpaceManager->YMost()); - - if (!isPseudoFrame) { - aDesiredSize.width += mySpacing->mBorderPadding.left + mySpacing->mBorderPadding.right; - aDesiredSize.height += mySpacing->mBorderPadding.top + mySpacing->mBorderPadding.bottom; - } -#else - aDesiredSize.height = PR_MAX(desiredRect.YMost(), mSpaceManager->YMost()); - if (isPseudoFrame) { - aDesiredSize.width = desiredRect.XMost(); - } else { - aDesiredSize.width = aMaxSize.width; - aDesiredSize.height += mySpacing->mBorderPadding.top + - mySpacing->mBorderPadding.bottom; - } -#endif - aDesiredSize.ascent = aDesiredSize.height; - aDesiredSize.descent = 0; + ComputeDesiredSize(desiredRect, aMaxSize, mySpacing, + isPseudoFrame, aDesiredSize); } return NS_OK; @@ -309,21 +291,30 @@ NS_METHOD nsBodyFrame::IncrementalReflow(nsIPresContext* aPresContext, SetLastContentOffset(mFirstChild); // Return our desired size - aDesiredSize.height = PR_MAX(aDesiredRect.YMost(), mSpaceManager->YMost()); - if (isPseudoFrame) { - aDesiredSize.width = aDesiredRect.XMost(); - } else { - aDesiredSize.width = aMaxSize.width; - aDesiredSize.height += mySpacing->mBorderPadding.top + - mySpacing->mBorderPadding.bottom; - } - aDesiredSize.ascent = aDesiredSize.height; - aDesiredSize.descent = 0; + ComputeDesiredSize(aDesiredRect, aMaxSize, mySpacing, + isPseudoFrame, aDesiredSize); mSpaceManager->Translate(-leftInset, -topInset); return NS_OK; } +void +nsBodyFrame::ComputeDesiredSize(const nsRect& aDesiredRect, + const nsSize& aMaxSize, + nsStyleSpacing* aSpacing, + PRBool aIsPseudoFrame, + nsReflowMetrics& aDesiredSize) +{ + aDesiredSize.height = PR_MAX(aDesiredRect.YMost(), mSpaceManager->YMost()); + aDesiredSize.width = PR_MAX(aDesiredRect.XMost(), aMaxSize.width); + if (!aIsPseudoFrame) { + aDesiredSize.height += aSpacing->mBorderPadding.top + + aSpacing->mBorderPadding.bottom; + } + aDesiredSize.ascent = aDesiredSize.height; + aDesiredSize.descent = 0; +} + NS_METHOD nsBodyFrame::ContentAppended(nsIPresShell* aShell, nsIPresContext* aPresContext, nsIContent* aContainer) diff --git a/mozilla/layout/html/base/src/nsBodyFrame.h b/mozilla/layout/html/base/src/nsBodyFrame.h index 1c5eee8c5f8..634a82fe7b0 100644 --- a/mozilla/layout/html/base/src/nsBodyFrame.h +++ b/mozilla/layout/html/base/src/nsBodyFrame.h @@ -73,6 +73,12 @@ protected: ~nsBodyFrame(); + void ComputeDesiredSize(const nsRect& aDesiredRect, + const nsSize& aMaxSize, + nsStyleSpacing* aSpacing, + PRBool aIsPseudoFrame, + nsReflowMetrics& aDesiredSize); + virtual PRIntn GetSkipSides() const; private: