Open Bug 683043 Opened 10 years ago Updated 5 months ago

reimplement forced page breaks (page-break-before / page-break-after) (kill nsPageBreakFrame)

Categories

(Core :: Layout: Block and Inline, defect, P3)

defect

Tracking

()

People

(Reporter: fantasai.bugs, Unassigned)

References

(Blocks 8 open bugs)

Details

(Keywords: dev-doc-needed, Whiteboard: [layout:backlog:quality])

Attachments

(1 file)

The current way we handle page-break-before: always; and page-break-after: always; is to create a special frame that expands to fill the height of the page. This bug is to rip out that code and replace it with another approach that simply pushes frames out during reflow.

Benefits:
  - No problems from nsPageBreakFrame showing up in unexpected places
  - Can correctly pass through multi-col elements ( bug 412563 )
  - Better architecture to tackle other page-break controls ( bug 132035 )
Assignee: nobody → fantasai.bugs
See Also: → 616402
I look forward to a detailed design that handles break priorities :-).
That's technically out-of-scope for this bug. :) There are no priorities for forced breaks: they just happen.
Oh hmm. I thought you could override "always" with "avoid" in some cases, but I guess not. Good, that makes this bug easier :-).
Blocks: 326685
Depends on: 775624
Blocks: css-break-3
Attached patch WIPSplinter Review
This is about as far as I got before getting stuck on nsReflowStatus (bug 775624). It's just some exploratory notes to myself; possibly only the CombineBreakTypes part is useful.

Anyway, the idea is that nsReflowStatus would be expanded to have page break types. These would be used during layout: a frame with a forced break-after would return its break type in its reflow status, and the parent would then push out the next sibling (if any) and propagate the break status up.
OS: Linux → All
Hardware: x86 → All
Version: unspecified → Trunk

Assuming that Fantasai is not actively working on this.

Assignee: fantasai.bugs → nobody
Blocks: 1601429
Whiteboard: [layout:backlog:quality]
Priority: -- → P3
No longer blocks: 1601429
Blocks: 1678714
Summary: reimplement forced page breaks (page-break-before / page-break-after) → reimplement forced page breaks (page-break-before / page-break-after) (kill nsPageBreakFrame)
You need to log in before you can comment on or make changes to this bug.