1,295
edits
(Created page with '== Gecko frame destruction invariants == * nsIFrame::RemoveFrame deletes a frame, all its descendants, and all their continuations * Before a placeholder frame is destroyed, its...') |
No edit summary |
||
Line 9: | Line 9: | ||
To remove the frames for an element, we | To remove the frames for an element, we | ||
# Find the primary frame P | # Find the primary frame P | ||
# DeletingFrameSubtree: For all in-flow frames under P or its continuations, | # DeletingFrameSubtree: For all in-flow frames under P or its continuations, if the frame is a placeholder whose out-of-flow is not under the placeholder's P continuation ancestor, remove the mapping from the out-of-flow to the placeholder and remove the frame subtree via RemoveFrame. RemoveFrame breaks the mapping from placeholders to outOfFlows for floats, but not for abs-pos frames. | ||
if the frame is a placeholder whose out-of-flow is not under the placeholder's | |||
P continuation ancestor, remove the mapping from the out-of-flow to the | |||
placeholder and remove the frame subtree via RemoveFrame. RemoveFrame | |||
breaks the mapping from placeholders to outOfFlows for floats, but not | |||
for abs-pos frames. | |||
# RemoveFrame implementations usually start by removing the next continuation | # RemoveFrame implementations usually start by removing the next continuation | ||
if there is one via DeleteNextInFlowChild, and then removing the frame and calling Destroy on it, which recursively destroys children. | if there is one via DeleteNextInFlowChild, and then removing the frame and calling Destroy on it, which recursively destroys children. | ||
# nsBlockFrame::RemoveFrame for in-flow frames finds the first frame to | # nsBlockFrame::RemoveFrame for in-flow frames finds the first frame to remove in the line list, then removes the frames in flow order. | ||
remove in the line list, then removes the frames in flow order. |
edits