Cannot vertically position abspos frames in a fragmented abspos container's second column (And beyond)
Categories
(Core :: Layout: Columns, defect)
Tracking
()
People
(Reporter: dshin, Unassigned)
References
(Depends on 1 open bug)
Details
Attachments
(2 files)
STR: Run attached test case
Expected: Purple square in the middle of each column
Actual: Purple square in the second column is stuck at the top, purple squares in 3rd and 4th column are missing.
| Reporter | ||
Comment 1•9 months ago
|
||
Ah, It's not that 3rd and 4th columns' squares are missing; they're all overlapping the 2nd one.
| Reporter | ||
Comment 2•9 months ago
|
||
If column-rule: 1px solid is used, I see the column rule only going between the first and the second column, overflowing the multicol frame.
It seems the length of the column-rule corresponds to the value of top.
| Reporter | ||
Comment 3•9 months ago
|
||
Corresponding frame dump:
ColumnSetWrapper(div)(0)@7124c23d5c68 parent=7124c23d5a88 (x=0, y=0, w=24300, h=6120) ink-overflow=(x=0, y=0, w=24300, h=19560) scr-overflow=(x=0, y=0, w=24300, h=19560) [content=7124bef03d30][cs=7124c23f3f08] <
line@7124c23d5df0 count=1 state=block,clean,prevmarginclean,not-impacted,not-wrapped,no-break,clear-before:none,clear-after:none (x=60, y=60, w=6000, h=19500) ink-overflow=(x=60, y=60, w=12060, h=19500) scr-overflow=(x=60, y=60, w=12060, h=19500) <
ColumnSet(div)(0)@7124c23d5d38 parent=7124c23d5c68 (x=60, y=60, w=6000, h=19500) ink-overflow=(x=0, y=0, w=12060, h=19500) scr-overflow=(x=0, y=0, w=12060, h=19500) [content=7124bef03d30][cs=7124c23f4108][:-moz-column-set] <
Block(div)(0)@7124c23d5ba0 parent=7124c23d5d38 next=7124c23d6a38 next-in-flow=7124c23d6a38 (x=0, y=0, w=6000, h=0) ink-overflow=(x=0, y=0, w=6000, h=4500) scr-overflow=(x=0, y=0, w=6000, h=4500) [content=7124bef03d30][cs=7124c23f3808][:-moz-column-content] <
line@7124c23d6658 count=1 state=block,clean,prevmarginclean,not-impacted,not-wrapped,no-break,clear-before:none,clear-after:none (x=0, y=0, w=6000, h=0) ink-overflow=(x=0, y=0, w=6000, h=4500) scr-overflow=(x=0, y=0, w=6000, h=4500) <
Block(div)(1)@7124c23d5e40 parent=7124c23d5ba0 next-in-flow=7124c23d6960 (x=0, y=0, w=6000, h=0) ink-overflow=(x=0, y=0, w=6000, h=4500) scr-overflow=(x=0, y=0, w=6000, h=4500) normal-position=(0,0) [content=7124bef03dc0][cs=7124c23f3408] <
line@7124c23d6608 count=7 state=inline,clean,prevmarginclean,not-impacted,not-wrapped,no-break,clear-before:none,clear-after:none (x=0, y=0, w=0, h=0) <
Placeholder(div)(1)@7124c23d5fd0 parent=7124c23d5e40 next=7124c23d6050 (x=0, y=0, w=0, h=0) [content=7124bef04040][cs=7124c23f3308][:-moz-oof-placeholder] outOfFlowFrame=Block(div)(1)@7124c23d5f08
Text(2)"\n "@7124c23d6050 parent=7124c23d5e40 next=7124c23d61b8 (x=0, y=0, w=0, h=0) [content=7124bef0b980][cs=7124c23f4e08][:-moz-text] [run=7124ea1e3f70][0,5,T]
Placeholder(div)(3)@7124c23d61b8 parent=7124c23d5e40 next=7124c23d6238 (x=0, y=0, w=0, h=0) [content=7124bef040d0][cs=7124c23f3308][:-moz-oof-placeholder] outOfFlowFrame=Block(div)(3)@7124c23d60f0
Text(4)"\n "@7124c23d6238 parent=7124c23d5e40 next=7124c23d63a0 (x=0, y=0, w=0, h=0) [content=7124bef0ba00][cs=7124c23f4e08][:-moz-text] [run=7124c5746680][0,5,T]
Placeholder(div)(5)@7124c23d63a0 parent=7124c23d5e40 next=7124c23d6420 (x=0, y=0, w=0, h=0) [content=7124bef04160][cs=7124c23f3308][:-moz-oof-placeholder] outOfFlowFrame=Block(div)(5)@7124c23d62d8
Text(6)"\n "@7124c23d6420 parent=7124c23d5e40 next=7124c23d6588 (x=0, y=0, w=0, h=0) [content=7124bef0ba80][cs=7124c23f4e08][:-moz-text] [run=7124c5746400][0,5,T]
Placeholder(div)(7)@7124c23d6588 parent=7124c23d5e40 (x=0, y=0, w=0, h=0) [content=7124bef041f0][cs=7124c23f3308][:-moz-oof-placeholder] outOfFlowFrame=Block(div)(7)@7124c23d64c0
>
AbsoluteList@7124c2359fa0 <
Block(div)(1)@7124c23d5f08 parent=7124c23d5e40 next=7124c23d60f0 (x=1500, y=1500, w=3000, h=3000) [content=7124bef04040][cs=7124c23f4908] <
>
Block(div)(3)@7124c23d60f0 parent=7124c23d5e40 next=7124c23d62d8 next-in-flow=7124c23d66f8 (x=1500, y=7500, w=3000, h=0) [content=7124bef040d0][cs=7124c23f3608] <
>
Block(div)(5)@7124c23d62d8 parent=7124c23d5e40 next=7124c23d64c0 next-in-flow=7124c23d67d0 (x=1500, y=13500, w=3000, h=0) [content=7124bef04160][cs=7124c23f4a08] <
>
Block(div)(7)@7124c23d64c0 parent=7124c23d5e40 next-in-flow=7124c23d6898 (x=1500, y=19500, w=3000, h=0) [content=7124bef041f0][cs=7124c23f4b08] <
>
>
>
>
>
Block(div)(0)@7124c23d6a38 parent=7124c23d5d38 prev-in-flow=7124c23d5ba0 (x=6060, y=0, w=6000, h=0) ink-overflow=(x=0, y=0, w=6000, h=3000) scr-overflow=(x=0, y=0, w=6000, h=3000) [content=7124bef03d30][cs=7124c23f3808][:-moz-column-content] <
OverflowContainersList@7124c23d6b00 <
Block(div)(1)@7124c23d6960 parent=7124c23d6a38 prev-in-flow=7124c23d5e40 (x=0, y=0, w=6000, h=0) ink-overflow=(x=0, y=0, w=6000, h=3000) scr-overflow=(x=0, y=0, w=6000, h=3000) [content=7124bef03dc0][cs=7124c23f3408] <
OverflowContainersList@7124c23d6a28 <
Block(div)(3)@7124c23d66f8 parent=7124c23d6960 next=7124c23d67d0 prev-in-flow=7124c23d60f0 (x=1500, y=0, w=3000, h=3000) [content=7124bef040d0][cs=7124c23f3608] <
>
Block(div)(5)@7124c23d67d0 parent=7124c23d6960 next=7124c23d6898 prev-in-flow=7124c23d62d8 (x=1500, y=0, w=3000, h=3000) [content=7124bef04160][cs=7124c23f4a08] <
>
Block(div)(7)@7124c23d6898 parent=7124c23d6960 prev-in-flow=7124c23d64c0 (x=1500, y=0, w=3000, h=3000) [content=7124bef041f0][cs=7124c23f4b08] <
>
>
>
>
>
>
>
>
| Reporter | ||
Comment 4•9 months ago
|
||
Overflow is added as a hack, it seems, here, for printing.
Eventually, this causes the overflowed frame to be reflow outside of nsAbsoluteContainingBlock, in nsContainerFrame::ReflowOverflowContainerChildren.
Fixing this would require having continuation handling specific to nsAbsoluteContainingBlock, as the comment referencing the hack says.
Comment 5•9 months ago
|
||
(In reply to David Shin[:dshin] from comment #1)
Ah, It's not that 3rd and 4th columns' squares are missing; they're all overlapping the 2nd one.
That sounds like it might be the same as bug 546559, then. (The 2nd column here -- where elements 2,3,4 get superimposed at the top -- is analogous to the 2nd page in bug 546559.)
Marking as a dependency for now.
Comment 7•5 months ago
|
||
This is fixed by bug 1994346 with layout.abspos.fragmentainer-aware-positioning.enabled=true. Both testcases in comment 0 and comment 2 look as expected.
David, I'm going to close this, but let me know if I miss anything.
Description
•