Bug 1309467 Part 3 - Move FloatInfo::mRect construction into FloatInfo's constructor.
In later parts, we need the aMarginRect to build rect for shape box.
MozReview-Commit-ID: LtwMxbsNu3u
--- a/layout/generic/nsFloatManager.cpp
+++ b/layout/generic/nsFloatManager.cpp
@@ -256,21 +256,18 @@ nsFloatManager::GetFlowArea(WritingMode
nsresult
nsFloatManager::AddFloat(nsIFrame* aFloatFrame, const LogicalRect& aMarginRect,
WritingMode aWM, const nsSize& aContainerSize)
{
CHECK_BLOCK_DIR(aWM);
NS_ASSERTION(aMarginRect.ISize(aWM) >= 0, "negative inline size!");
NS_ASSERTION(aMarginRect.BSize(aWM) >= 0, "negative block size!");
- FloatInfo info(aFloatFrame,
- aMarginRect.LineLeft(aWM, aContainerSize) + mLineLeft,
- aMarginRect.BStart(aWM) + mBlockStart,
- aMarginRect.ISize(aWM),
- aMarginRect.BSize(aWM));
+ FloatInfo info(aFloatFrame, mLineLeft, mBlockStart, aMarginRect, aWM,
+ aContainerSize);
// Set mLeftBEnd and mRightBEnd.
if (HasAnyFloats()) {
FloatInfo &tail = mFloats[mFloats.Length() - 1];
info.mLeftBEnd = tail.mLeftBEnd;
info.mRightBEnd = tail.mRightBEnd;
} else {
info.mLeftBEnd = nscoord_MIN;
@@ -524,20 +521,25 @@ nsFloatManager::ClearContinues(StyleClea
(aBreakType == StyleClear::Both ||
aBreakType == StyleClear::Right));
}
/////////////////////////////////////////////////////////////////////////////
// FloatInfo
nsFloatManager::FloatInfo::FloatInfo(nsIFrame* aFrame,
- nscoord aLineLeft, nscoord aBStart,
- nscoord aISize, nscoord aBSize)
+ nscoord aLineLeft, nscoord aBlockStart,
+ const LogicalRect& aMarginRect,
+ WritingMode aWM,
+ const nsSize& aContainerSize)
: mFrame(aFrame)
- , mRect(aLineLeft, aBStart, aISize, aBSize)
+ , mRect(aMarginRect.LineLeft(aWM, aContainerSize) + aLineLeft,
+ aMarginRect.BStart(aWM) + aBlockStart,
+ aMarginRect.ISize(aWM),
+ aMarginRect.BSize(aWM))
{
MOZ_COUNT_CTOR(nsFloatManager::FloatInfo);
}
#ifdef NS_BUILD_REFCNT_LOGGING
nsFloatManager::FloatInfo::FloatInfo(const FloatInfo& aOther)
: mFrame(aOther.mFrame),
mLeftBEnd(aOther.mLeftBEnd),
--- a/layout/generic/nsFloatManager.h
+++ b/layout/generic/nsFloatManager.h
@@ -307,18 +307,19 @@ public:
private:
struct FloatInfo {
nsIFrame *const mFrame;
// The lowest block-ends of left/right floats up to and including
// this one.
nscoord mLeftBEnd, mRightBEnd;
- FloatInfo(nsIFrame* aFrame, nscoord aLineLeft, nscoord aBStart,
- nscoord aISize, nscoord aBSize);
+ FloatInfo(nsIFrame* aFrame, nscoord aLineLeft, nscoord aBlockStart,
+ const mozilla::LogicalRect& aMarginRect,
+ mozilla::WritingMode aWM, const nsSize& aContainerSize);
nscoord LineLeft() const { return mRect.x; }
nscoord LineRight() const { return mRect.XMost(); }
nscoord ISize() const { return mRect.width; }
nscoord BStart() const { return mRect.y; }
nscoord BEnd() const { return mRect.YMost(); }
nscoord BSize() const { return mRect.height; }
bool IsEmpty() const { return mRect.IsEmpty(); }