3
edits
(Changed HTMLReflowState to ReflowInput and HTMLReflowMetrics to ReflowOutput) |
(Adding description for ib-splitting) |
||
| Line 442: | Line 442: | ||
nsIFrame::GetNextInFlow and nsIFrame::GetPrevInFlow traverse only the | nsIFrame::GetNextInFlow and nsIFrame::GetPrevInFlow traverse only the | ||
fluid continuations and do not cross fixed continuation boundaries. | fluid continuations and do not cross fixed continuation boundaries. | ||
If an inline frame has non-inline children, then we split the original | |||
inline frame into multiple parts. The original inline's children are | |||
distributed into these parts like so. The children of the original | |||
inline are grouped into runs of inline and non-inline and runs of | |||
inlines get an inline parent while runs of non-inline get an anonymous | |||
block parent. This is ib-splitting or block-inside-inline-splitting. | |||
This splitting proceeds recursively over the frame tree until all | |||
non-inlines inside inlines are ancestors of a block frame with anonymous | |||
block wrappers in between. This splitting maintains the relative order | |||
between these child frames and the relationship between the parts of a | |||
split inline is maintained using an ib-sibling chain. It is important | |||
to note that any wrappers created during frame construction (such as | |||
for tables) may not be included in the ib-sibling chain depending on | |||
when this wrapper creation takes place. | |||
TODO: nsBox craziness from https://bugzilla.mozilla.org/show_bug.cgi?id=524925#c64 | TODO: nsBox craziness from https://bugzilla.mozilla.org/show_bug.cgi?id=524925#c64 | ||
TODO: link to documentation of block and inline layout | TODO: link to documentation of block and inline layout | ||
edits