From: Alexander Stippich Date: Wed, 26 Feb 2025 19:46:04 +0000 (+0100) Subject: [PATCH] rely on CUPS for multiple page ranges in unix version of QPrintDialog X-Git-Tag: archive/raspbian/6.8.2+dfsg-9+rpi1^2~9 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=57a0529ed1e00c690cae3b0df65ed857e39a914a;p=qt6-base.git [PATCH] rely on CUPS for multiple page ranges in unix version of QPrintDialog Since the introduction of QPageRanges with Qt6, multiple/arbitrary page ranges are broken in the unix implementation of QPrintDialog due to a possible double application of the page ranges: on the application side and on the server side with CUPS. Reason for this is that the QPrinter::PrintRange is set to PageRange instead of AllPages. The latter is needed when relying on the CUPS server-side page range. However, the server-side page range is always applied later on. Restore the behavior of Qt5 and set the PrintRange to AllPages for multiple/arbitrary page ranges and rely on the server-side filtering with CUPS. Change-Id: I1b85552a8cf2509b11a81db028f957584043f3ee Reviewed-by: Albert Astals Cid Reviewed-by: David Faure (cherry picked from commit 2428cbf44e3e2aa4eaf00c9548ac5a74685101c4) Reviewed-by: Qt Cherry-pick Bot (cherry picked from commit b630ed4ef8c7ae43c8ab2a8826d664995cc8b685) Gbp-Pq: Name upstream_cups_for_multiple_page_ranges.diff --- diff --git a/src/printsupport/dialogs/qprintdialog_unix.cpp b/src/printsupport/dialogs/qprintdialog_unix.cpp index 8846fc36..bdaa5fa0 100644 --- a/src/printsupport/dialogs/qprintdialog_unix.cpp +++ b/src/printsupport/dialogs/qprintdialog_unix.cpp @@ -785,10 +785,8 @@ void QPrintDialogPrivate::setupPrinter() #if QT_CONFIG(cups) if (options.pagesRadioButton->isChecked()) { const QPageRanges ranges = QPageRanges::fromString(options.pagesLineEdit->text()); - if (!ranges.isEmpty()) { - p->setPrintRange(QPrinter::PageRange); - p->setPageRanges(ranges); - } + p->setPrintRange(QPrinter::AllPages); + p->setPageRanges(QPageRanges()); // server-side page filtering QCUPSSupport::setPageRange(p, ranges.toString());