Confirmed users
885
edits
m (→Overflow Container Continuations: - update nsContainerFrame.h link to use mozilla-central) |
(Replace mxr with searchfox, and update reflow status to reflect changes in bug 775624.) |
||
Line 50: | Line 50: | ||
=== Overflow Container Continuations === | === Overflow Container Continuations === | ||
Sometimes the content of a frame needs to break across pages even though the frame itself is complete. This usually happens if an element with fixed height has overflow that doesn't fit on one page. In this case, the completed frame is "overflow incomplete", and special continuations are created to hold its overflow. These continuations are called "overflow containers". They are invisible, and are kept on a special list in their parent. See documentation in [ | Sometimes the content of a frame needs to break across pages even though the frame itself is complete. This usually happens if an element with fixed height has overflow that doesn't fit on one page. In this case, the completed frame is "overflow incomplete", and special continuations are created to hold its overflow. These continuations are called "overflow containers". They are invisible, and are kept on a special list in their parent. See documentation in [https://searchfox.org/mozilla-central/source/layout/generic/nsContainerFrame.h nsContainerFrame.h] and example trees in [https://bugzilla.mozilla.org/show_bug.cgi?id=379349#c3 bug 379349 comment 3]. | ||
This infrastructure was extended in [https://bugzilla.mozilla.org/show_bug.cgi?id=154892 bug 154892] to also manage continuations for absolutely-positioned frames. | This infrastructure was extended in [https://bugzilla.mozilla.org/show_bug.cgi?id=154892 bug 154892] to also manage continuations for absolutely-positioned frames. | ||
Line 70: | Line 70: | ||
== Reflow statuses == | == Reflow statuses == | ||
The aStatus argument of Reflow reflects that. | The aStatus argument of Reflow reflects that. <code>IsComplete()</code> means that we reflowed all the content and no more next-in-flows are needed. At that point there may still be next in flows, but the parent will delete them. <code>IsIncomplete()</code> means "some content did not fit in this frame". <code>IsOverflowIncomplete()</code> means that the frame is itself complete, but some of its content didn't fit: this triggers the creation of overflow containers for the frame's continuations. <code>IsIncomplete()</code> and <code>NextInFlowNeedsReflow()</code> means "some content did not fit in this frame AND it must be reflowed". These values are defined and documented in [https://searchfox.org/mozilla-central/source/layout/generic/nsIFrame.h nsIFrame.h] (search for "Reflow status"). | ||
== Dynamic Reflow Considerations == | == Dynamic Reflow Considerations == |