Files
ElyOffice/tasks/reviews/R7.6-r3.md
T
ZacharyZhang-NYandClaude Opus 5.5 13546ea899 R7.6: Windows and Linux print (#3)
Windows prints through the system dialog at the document's paper;
Linux through the desktop portal, the dialog's choices laid out by Ely.
Round 3 findings fixed without a further review, as the rules say.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-16 16:59:46 -04:00

2.7 KiB
Raw Blame History

FAIL

  • crates/ely-platform/src/print/win.rs:287 — Windows prints annotations using screen visibility instead of their print flags. Passing the real worker's print copies through Microsoft Print to PDF returns Ok(true) for both a Square annotation with /F 0 (not printable) and one with /F 36 (Print + NoView), but the first prints 8,100 red pixels and the second prints none; the /F 4 control prints correctly (.work/r76-review-r3/windows-render.log, worker-probe.log). These flags explicitly distinguish screen visibility from printing (PDF reference, Table 8.11). Render with print semantics, or prepare a copy containing only flattened printable appearances before using the screen renderer. Add rendered Windows regressions for both flags through print_copy.

  • crates/ely-platform/src/print/linux.rs:69; crates/ely-platform/src/print/linux/sheets.rs:168 — Odd/even selection is applied locally and then applied again by the GTK/CUPS backend through the unchanged print token. For a four-page document with Even selected, the exact compositor submits original pages [2, 4]; the real GTK 3.24.52 CUPS backend still puts cups-page-set=even on its job (.work/r76-review-r3/linux-probe.log, gtk-cups.log). CUPS therefore selects only the second submitted sheet, losing original page 2. The portal retains the chosen settings, and GTK forwards page-set to CUPS. Coordinate manual processing with backend processing so each setting is applied once, and cover the real CUPS backend as well as print-to-file; the current fake portal only records the supplied bytes.

  • crates/ely-platform/src/print/linux/sheets.rs:40 — Shown::of uses CropBox without intersecting it with MediaBox, expanding the printed page and exposing clipped content. A PDF with MediaBox [0 0 612 792], CropBox [0 0 700 792], and a red square at x=650–680 opens with damaged=false; the worker's preview and print copy show a 612×792 page with only the interior blue control. Linux composition instead produces 700×792 and reveals the additional 900 red pixels (.work/r76-review-r3/render-comparison.log). PDF boundaries extending beyond MediaBox must be reduced to their intersection (PDF reference, §8.6). Use that effective rectangle consistently for sizing, placement, and the form's clipping box, with a rendered regression proving the outside content stays clipped.