Bug 1797703 - Fix frame constructor save state restoration. r=emilio
Restore the old logic [1] prior to introducing Bug 1797011 Part 2. [1] https://searchfox.org/mozilla-central/rev/85cbcecd24554c1fa88360412452ad0f7ed48630/layout/base/nsCSSFrameConstructor.cpp#1309-1335 [2] https://hg.mozilla.org/mozilla-central/rev/3f443cbb5bdd The wpt test is written by Emilio Cobos Álvarez <emilio@crisal.io> in https://phabricator.services.mozilla.com/D160523. Differential Revision: https://phabricator.services.mozilla.com/D160600
This commit is contained in:
@@ -1313,15 +1313,18 @@ nsFrameConstructorSaveState::~nsFrameConstructorSaveState() {
|
||||
MOZ_ASSERT(mState, "Can't have mList set without having a state!");
|
||||
mState->ProcessFrameInsertions(*mList, mChildListID);
|
||||
|
||||
if (mSavedFixedPosIsAbsPos) {
|
||||
MOZ_ASSERT(mList == &mState->mAbsoluteList);
|
||||
if (mList == &mState->mAbsoluteList) {
|
||||
mState->mFixedPosIsAbsPos = mSavedFixedPosIsAbsPos;
|
||||
// mAbsoluteList was moved to mFixedList, so move mFixedList back
|
||||
// and repair the old mFixedList now.
|
||||
mState->mAbsoluteList = std::move(mState->mFixedList);
|
||||
mState->mFixedList = std::move(mSavedList);
|
||||
if (mSavedFixedPosIsAbsPos) {
|
||||
mState->mAbsoluteList = std::move(mState->mFixedList);
|
||||
mState->mFixedList = std::move(mSavedList);
|
||||
} else {
|
||||
mState->mAbsoluteList = std::move(mSavedList);
|
||||
}
|
||||
} else {
|
||||
*mList = std::move(mSavedList);
|
||||
mState->mFloatedList = std::move(mSavedList);
|
||||
}
|
||||
|
||||
MOZ_ASSERT(mSavedList.IsEmpty(),
|
||||
|
||||
Reference in New Issue
Block a user