Shifting discussion about this out of bug 379349.
https://bugzilla.mozilla.org/show_bug.cgi?id=379349
To summarize,
Normally when a frame can't completely fit on one page, we
split the frame so we can continue the element's content on
the next page. The second frame is called a continuation,
or next-in-flow, of the first. The first frame puts everything
that doesn't fit on its "overflow" list, and when the second
frame gets reflowed, it pulls that content into its own child
list and reflows it.
Now, if you have a fixed-height block that has so much content
that it overflows the block, we can't paginate the overflow as
such: the block itself winds up spanning multiple pages after
it was supposed to end.
Notice there are two meanings for the term "overflow" here:
1. content that doesn't fit inside the computed height
2. content that doesn't fit on the page and is waiting
to be transferred to a new frame
The first is defined by the CSS spec, and we use it in our
code to label e.g. the frame's overflowArea rect. The second
concept doesn't occur in the specs; it's just our convention.
To fix this bug, I'm creating a new kind of frame that is a
continuation frame, but is marked as only holding content that
overflows its containing box. It is invisible to other frames'
reflow. This creates two new lists of frames: "overflow
containing continuations", which are special children of a
frame, and "overflow containing continuations overflow", which,
like the overflow list, is a temporary list of frames that need
to be pulled by their parent's next-in-flow. An explanation of
the fix and how it works is in comment 15:
https://bugzilla.mozilla.org/show_bug.cgi?id=379349#c15
My first pass patch had
mOverflowContainers
and mOverflowcontainerOverflow
As you may have noticed, the terminology is getting a bit
confusing.
My codebase right now is using
mOverflowContainers
and mExcessOverflowContainers
I'm pretty happy with that. It uses "excess" instead of
"overflow" for that temporary list. This is inconsistent
with the naming for normal frames, however. I'd consider
writing a followup patch that renames the rest of the
codebase to match, but roc's also been posting some
alternative suggestions such as
mVestige and mOverflowVestige
mLeftovers and mOverflowLeftovers
So comments and suggestions welcome. I just want to move the
naming discussion here to keep the bug focused on more technical
issues. :)
~fantasai
_______________________________________________
dev-tech-layout mailing list
[email protected]
https://lists.mozilla.org/listinfo/dev-tech-layout