mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 847208 - Reuse RemoveFloat() in a couple of places that did manual removal of a float child frame. r=dbaron
This commit is contained in:
parent
9590785240
commit
30b8a9aadc
@ -5615,19 +5615,8 @@ nsBlockFrame::StealFrame(nsPresContext* aPresContext,
|
|||||||
|
|
||||||
if ((aChild->GetStateBits() & NS_FRAME_OUT_OF_FLOW) &&
|
if ((aChild->GetStateBits() & NS_FRAME_OUT_OF_FLOW) &&
|
||||||
aChild->IsFloating()) {
|
aChild->IsFloating()) {
|
||||||
MOZ_ASSERT(mFloats.ContainsFrame(aChild) ||
|
RemoveFloat(aChild);
|
||||||
(GetPushedFloats() && GetPushedFloats()->ContainsFrame(aChild)),
|
return NS_OK;
|
||||||
"aChild is not our child");
|
|
||||||
bool removed = mFloats.StartRemoveFrame(aChild);
|
|
||||||
if (!removed) {
|
|
||||||
nsFrameList* list = GetPushedFloats();
|
|
||||||
if (list) {
|
|
||||||
removed = list->ContinueRemoveFrame(aChild);
|
|
||||||
// XXXmats delete the property if the list is now empty?
|
|
||||||
}
|
|
||||||
}
|
|
||||||
MOZ_ASSERT(removed, "StealFrame failed to remove the float");
|
|
||||||
return removed ? NS_OK : NS_ERROR_UNEXPECTED;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((aChild->GetStateBits() & NS_FRAME_IS_OVERFLOW_CONTAINER)
|
if ((aChild->GetStateBits() & NS_FRAME_IS_OVERFLOW_CONTAINER)
|
||||||
@ -6885,28 +6874,7 @@ nsBlockFrame::DoCollectFloats(nsIFrame* aFrame, nsFrameList& aList,
|
|||||||
aFrame->GetType() == nsGkAtoms::placeholderFrame ?
|
aFrame->GetType() == nsGkAtoms::placeholderFrame ?
|
||||||
nsLayoutUtils::GetFloatFromPlaceholder(aFrame) : nullptr;
|
nsLayoutUtils::GetFloatFromPlaceholder(aFrame) : nullptr;
|
||||||
if (outOfFlowFrame && outOfFlowFrame->GetParent() == this) {
|
if (outOfFlowFrame && outOfFlowFrame->GetParent() == this) {
|
||||||
// Floats live in mFloats, or in the PushedFloat or OverflowOutOfFlows
|
RemoveFloat(outOfFlowFrame);
|
||||||
// frame list properties.
|
|
||||||
#ifdef DEBUG
|
|
||||||
if (!mFloats.ContainsFrame(outOfFlowFrame)) {
|
|
||||||
nsFrameList* list = GetPushedFloats();
|
|
||||||
if (!list || !list->ContainsFrame(outOfFlowFrame)) {
|
|
||||||
list = GetOverflowOutOfFlows();
|
|
||||||
MOZ_ASSERT(list && list->ContainsFrame(outOfFlowFrame),
|
|
||||||
"the float is not our child");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
bool removed = mFloats.StartRemoveFrame(outOfFlowFrame);
|
|
||||||
if (!removed) {
|
|
||||||
nsFrameList* list = GetPushedFloats();
|
|
||||||
removed = list && list->ContinueRemoveFrame(outOfFlowFrame);
|
|
||||||
if (!removed) {
|
|
||||||
nsAutoOOFFrameList oofs(this);
|
|
||||||
removed = oofs.mList.ContinueRemoveFrame(outOfFlowFrame);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
MOZ_ASSERT(removed, "misplaced float child");
|
|
||||||
aList.AppendFrame(nullptr, outOfFlowFrame);
|
aList.AppendFrame(nullptr, outOfFlowFrame);
|
||||||
// FIXME: By not pulling floats whose parent is one of our
|
// FIXME: By not pulling floats whose parent is one of our
|
||||||
// later siblings, are we risking the pushed floats getting
|
// later siblings, are we risking the pushed floats getting
|
||||||
|
Loading…
Reference in New Issue
Block a user