mirror of
https://repo.dactyloidae.xyz/Dactyloidae/UXP.git
synced 2026-09-03 14:28:39 +09:00
Bug 1368547 - Remove nsFrameManagerBase::mPlaceholderMap and instead store the placeholder on a frame property on the out-of-flow
Tag #1375
This commit is contained in:
parent
854827bd83
commit
9b868f0298
18 changed files with 52 additions and 166 deletions
|
|
@ -692,10 +692,9 @@ nsAbsoluteItems::nsAbsoluteItems(nsContainerFrame* aContainingBlock)
|
|||
void
|
||||
nsAbsoluteItems::AddChild(nsIFrame* aChild)
|
||||
{
|
||||
NS_ASSERTION(aChild->PresContext()->FrameManager()->
|
||||
GetPlaceholderFrameFor(aChild),
|
||||
"Child without placeholder being added to nsAbsoluteItems?");
|
||||
aChild->AddStateBits(NS_FRAME_OUT_OF_FLOW);
|
||||
NS_ASSERTION(aChild->GetPlaceholderFrame(),
|
||||
"Child without placeholder being added to nsAbsoluteItems?");
|
||||
nsFrameItems::AddChild(aChild);
|
||||
}
|
||||
|
||||
|
|
@ -3032,14 +3031,12 @@ nsCSSFrameConstructor::CreatePlaceholderFrameFor(nsIPresShell* aPresShell,
|
|||
|
||||
placeholderFrame->Init(aContent, aParentFrame, aPrevInFlow);
|
||||
|
||||
// The placeholder frame has a pointer back to the out-of-flow frame
|
||||
// Associate the placeholder/out-of-flow with each other.
|
||||
placeholderFrame->SetOutOfFlowFrame(aFrame);
|
||||
aFrame->SetProperty(nsIFrame::PlaceholderFrameProperty(), placeholderFrame);
|
||||
|
||||
aFrame->AddStateBits(NS_FRAME_OUT_OF_FLOW);
|
||||
|
||||
// Add mapping from absolutely positioned frame to its placeholder frame
|
||||
aPresShell->FrameManager()->RegisterPlaceholderFrame(placeholderFrame);
|
||||
|
||||
return placeholderFrame;
|
||||
}
|
||||
|
||||
|
|
@ -6702,7 +6699,7 @@ nsCSSFrameConstructor::FindFrameForContentSibling(nsIContent* aContent,
|
|||
// If the frame is out-of-flow, GetPrimaryFrame() will have returned the
|
||||
// out-of-flow frame; we want the placeholder.
|
||||
if (sibling->GetStateBits() & NS_FRAME_OUT_OF_FLOW) {
|
||||
nsIFrame* placeholderFrame = GetPlaceholderFrameFor(sibling);
|
||||
nsIFrame* placeholderFrame = sibling->GetPlaceholderFrame();
|
||||
NS_ASSERTION(placeholderFrame, "no placeholder for out-of-flow frame");
|
||||
sibling = placeholderFrame;
|
||||
}
|
||||
|
|
@ -7968,7 +7965,7 @@ nsCSSFrameConstructor::ContentRangeInserted(nsIContent* aContainer,
|
|||
// the placeholder frame.
|
||||
if (insertion.mParentFrame->GetStateBits() & NS_FRAME_OUT_OF_FLOW) {
|
||||
nsPlaceholderFrame* placeholderFrame =
|
||||
GetPlaceholderFrameFor(insertion.mParentFrame);
|
||||
insertion.mParentFrame->GetPlaceholderFrame();
|
||||
NS_ASSERTION(placeholderFrame, "No placeholder for out-of-flow?");
|
||||
insertion.mParentFrame = placeholderFrame->GetParent();
|
||||
} else {
|
||||
|
|
@ -8456,7 +8453,7 @@ nsCSSFrameConstructor::ContentRemoved(nsIContent* aContainer,
|
|||
// :first-letter style applies.
|
||||
nsIFrame* inflowChild = childFrame;
|
||||
if (childFrame->GetStateBits() & NS_FRAME_OUT_OF_FLOW) {
|
||||
inflowChild = GetPlaceholderFrameFor(childFrame);
|
||||
inflowChild = childFrame->GetPlaceholderFrame();
|
||||
NS_ASSERTION(inflowChild, "No placeholder for out-of-flow?");
|
||||
}
|
||||
nsContainerFrame* containingBlock =
|
||||
|
|
@ -8512,7 +8509,7 @@ nsCSSFrameConstructor::ContentRemoved(nsIContent* aContainer,
|
|||
|
||||
// Notify the parent frame that it should delete the frame
|
||||
if (childFrame->GetStateBits() & NS_FRAME_OUT_OF_FLOW) {
|
||||
childFrame = GetPlaceholderFrameFor(childFrame);
|
||||
childFrame = childFrame->GetPlaceholderFrame();
|
||||
NS_ASSERTION(childFrame, "Missing placeholder frame for out of flow.");
|
||||
parentFrame = childFrame->GetParent();
|
||||
}
|
||||
|
|
@ -9153,7 +9150,7 @@ nsCSSFrameConstructor::ReplicateFixedFrames(nsPageContentFrame* aParentFrame)
|
|||
// are within fixed frames, because that would cause duplicates on the new
|
||||
// page - bug 389619)
|
||||
for (nsIFrame* fixed = firstFixed; fixed; fixed = fixed->GetNextSibling()) {
|
||||
nsIFrame* prevPlaceholder = GetPlaceholderFrameFor(fixed);
|
||||
nsIFrame* prevPlaceholder = fixed->GetPlaceholderFrame();
|
||||
if (prevPlaceholder &&
|
||||
nsLayoutUtils::IsProperAncestorFrame(prevCanvasFrame, prevPlaceholder)) {
|
||||
// We want to use the same style as the primary style frame for
|
||||
|
|
@ -9417,7 +9414,7 @@ nsCSSFrameConstructor::MaybeRecreateContainerForFrameRemoval(nsIFrame* aFrame,
|
|||
// Now check for possibly needing to reconstruct due to a pseudo parent
|
||||
nsIFrame* inFlowFrame =
|
||||
(aFrame->GetStateBits() & NS_FRAME_OUT_OF_FLOW) ?
|
||||
GetPlaceholderFrameFor(aFrame) : aFrame;
|
||||
aFrame->GetPlaceholderFrame() : aFrame;
|
||||
MOZ_ASSERT(inFlowFrame, "How did that happen?");
|
||||
MOZ_ASSERT(inFlowFrame == inFlowFrame->FirstContinuation(),
|
||||
"placeholder for primary frame has previous continuations?");
|
||||
|
|
@ -11594,7 +11591,7 @@ nsCSSFrameConstructor::RemoveFloatingFirstLetterFrames(
|
|||
}
|
||||
|
||||
// Discover the placeholder frame for the letter frame
|
||||
nsPlaceholderFrame* placeholderFrame = GetPlaceholderFrameFor(floatFrame);
|
||||
nsPlaceholderFrame* placeholderFrame = floatFrame->GetPlaceholderFrame();
|
||||
if (!placeholderFrame) {
|
||||
// Somethings really wrong
|
||||
return;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue