Fixes the Stage 2 properties dialog discarding the captured PrintTicket on reopen (#217).
PrintPanelService.showProperties gains a ticket: parameter; PrintSessionViewModel.openPrinterPreferences passes capturedTickets[queue].
The pre-modal configuration is extracted into a testable seam (makePanelPrintInfo → configureBoundPanel, same pattern as NativeTargetSpooler.makePrintInfo) running the spooler's S4→S7 order: ticket restore → Stage 2 selections (D6 parity) → PMSessionValidatePrintSettings + updateFromPMPrintSettings → applyPaper → suppression ②–⑤ → runModal.
Restore is warn-only on the panel path (unlike the spooler's fatal try): a stale/corrupt ticket must not keep the dialog from opening. Cross-queue refusal stays inside PMTicketBridge.restore (R3).
ICCERY_DEBUG_PANEL_DUMP=1 (DEBUG only) logs the unfiltered PMPrintSettingsToOptions output plus serialised settings/page-format sizes immediately before runModal and after OK — for the XP-55 RC3 verification.
The bound NSPrintPanel always opened on queue driver defaults —
capturedTickets[queue] was stored but never passed back, so every
vendor-PDE setting outside the four mirrored fields was discarded
on reopen (RC1), and pre-selection writes were never validated into
the ticket before runModal (RC2).
Extract the pre-modal configuration into a testable
configureBoundPanel seam with the spooler's S4→S7 order: ticket
restore (warn-only, unlike the spooler's fatal try — a stale ticket
must not keep the dialog from opening → Stage 2 selections (D6
parity) → PMSessionValidatePrintSettings + updateFromPMPrintSettings
→ applyPaper → suppression ②–⑤.
ICCERY_DEBUG_PANEL_DUMP=1 logs the raw PMPrintSettingsToOptions
output and serialised ticket sizes pre/post modal for the XP-55
RC3 verification.
Refs #217
EOF
)
gronod
added this to the M13 — Print ticket persistence & paper source milestone 2026-09-22 17:47:57 +01:00
gronod
merged commit bd14f30a05 into milestone/m13-print-ticket2026-09-22 18:56:33 +01:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Fixes the Stage 2 properties dialog discarding the captured
PrintTicketon reopen (#217).PrintPanelService.showPropertiesgains aticket:parameter;PrintSessionViewModel.openPrinterPreferencespassescapturedTickets[queue].makePanelPrintInfo→configureBoundPanel, same pattern asNativeTargetSpooler.makePrintInfo) running the spooler's S4→S7 order: ticket restore → Stage 2 selections (D6 parity) →PMSessionValidatePrintSettings+updateFromPMPrintSettings→applyPaper→ suppression ②–⑤ → runModal.try): a stale/corrupt ticket must not keep the dialog from opening. Cross-queue refusal stays insidePMTicketBridge.restore(R3).ICCERY_DEBUG_PANEL_DUMP=1(DEBUG only) logs the unfilteredPMPrintSettingsToOptionsoutput plus serialised settings/page-format sizes immediately beforerunModaland after OK — for the XP-55 RC3 verification.PrintPanelTicketTests(4 tests): ticket restored pre-modal, Stage 2 wins over ticket, cross-queue ticket refused, first-open selections + suppression keys land.Verification
xcodebuild test -scheme ICCery— PrintPanelTicketTests (4), PrintTicketTests, PrintPanelStubTests, PrintSessionViewModelTests all green.Out of scope per ticket:
lpoptionspersistence contingency (hardware-dependent, mutates queue defaults) and thecapturedCupsOptionsreplay fallback.Refs #217