Skip to content

fix: suppress spacing before after manual page breaks#3249

Open
leandrotcawork wants to merge 1 commit into
superdoc-dev:mainfrom
leandrotcawork:fix/manual-page-break-spacing
Open

fix: suppress spacing before after manual page breaks#3249
leandrotcawork wants to merge 1 commit into
superdoc-dev:mainfrom
leandrotcawork:fix/manual-page-break-spacing

Conversation

@leandrotcawork
Copy link
Copy Markdown

@leandrotcawork leandrotcawork commented May 12, 2026

Summary

This fixes a Word layout fidelity issue where the first real paragraph after an explicit manual page break could render too low in SuperDoc because paragraph spacingBefore was still applied at the fresh page top.

The change keeps the scope intentionally narrow:

  • avoid synthesizing an empty paragraph when a ProseMirror paragraph only contributes page/column break layout blocks
  • suppress spacingBefore only for paragraphs that start a fresh page immediately after an explicit manual page break
  • preserve pageBreakBefore behavior, where paragraph spacing should still apply
  • apply the suppression before float remeasurement so paragraph-anchored images/drawings use the actual page-top Y when computing available line widths

Why

In Word, an explicit manual page break starts the following paragraph at the top of the new page content area. SuperDoc could retain the following paragraph's spacingBefore, creating a visible gap above headings or other first-page content after the break.

The issue was especially visible in a DOCX fixture with a heading immediately after a manual page break: removing the gap manually in the editor also removed the intended paragraph border/line, which pointed to paragraph spacing/layout state rather than a painter-only issue.

Implementation Notes

  • pm-adapter now skips fallback empty paragraph creation when the converted paragraph contains only break blocks.
  • layoutDocument detects manual page breaks before a target paragraph, including paragraph-anchored images/drawings between the break and the paragraph.
  • layoutParagraphBlock suppresses spacingBefore only when the paragraph is still at the top of a fresh page, before float scans and remeasurement.
  • Page/margin-relative anchored object behavior is intentionally left unchanged in this PR.

Reference Document

DC_Template_Descricao_Cargo.docx

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 04d408539c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/layout-engine/layout-engine/src/index.ts
@leandrotcawork leandrotcawork force-pushed the fix/manual-page-break-spacing branch from 04d4085 to 4504c18 Compare May 12, 2026 18:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant