[css-multicol] Containing block of column spanners
Categories
(Core :: Layout: Columns, defect)
Tracking
()
People
(Reporter: mozilla-apprentice, Unassigned)
References
(Blocks 1 open bug)
Details
A resolution was made for csswg-drafts/#5612.
[css-multicol] Containing block of column spanners
- RESOLVED: CB chain goes straight from spanner to the multicol container
Comment 1•4 years ago
|
||
Hmm, would implementing this resolution violate any frame tree invariants?
Would forcing all our -moz-column-span-wrapper frames be non-CBs give the desired behavior?
Comment 2•4 years ago
|
||
Hmm, would implementing this resolution violate any frame tree invariants?
What kind of frame tree invariant are you referring to? We should either make sure the invariant are obeyed, or add proper documentation if column-span needs to make some exceptions.
Would forcing all our -moz-column-span-wrapper frames be non-CBs give the desired behavior?
Unfortunately, no. -moz-column-span-wrapper
frames is built after all child frame are generated via calling CreateColumnSpanSiblings()
as a post-processing. The absolute positioning containing block is already buggy (bug 1491727). The float element's frame is not correctly reparented at all, which triggers nsBlockFrame::CheckFloats: Explicit float list is out of sync with float cache
error, and may be the root cause behind bug 1671527. For example:
<!DOCTYPE html>
<div style="columns:2">
<div style="column-span:all"></div>
<div style="float:left"></div>
</div>
The initial frame tree has float element parented to the block before the column-span, where its placeholder is parented to the block's continuation after the column-span.
Currently, frame constructor uses PushAbsoluteContainingBlock
and PushFloatContainingBlock
to open a new scope and store the saved state as a local variable (onto the system stack). When the saved state goes out of scope, the out-of-flow frames get parented to the containing block. Thus, out-of-flow frames may get the wrong parent if they have column-span siblings.
To implement the desired behavior, we might want to implement a real stack in frame constructor to store absolute containing block scopes. When we constructor column-span frame's children, we can adjust the scope of the absolute containing block to skip those in between the spanner and the multicol container.
Updated•4 years ago
|
Comment 3•2 years ago
|
||
Clear a needinfo that is pending on an inactive user.
Inactive users most likely will not respond; if the missing information is essential and cannot be collected another way, the bug maybe should be closed as INCOMPLETE
.
For more information, please visit auto_nag documentation.
Description
•