diff options
author | Szabolcs David <davidsz@inf.u-szeged.hu> | 2022-09-12 16:46:05 +0200 |
---|---|---|
committer | Szabolcs David <davidsz@inf.u-szeged.hu> | 2022-09-14 20:08:07 +0200 |
commit | d783666ffed88dc432a686e7e2c92eefad43f4cd (patch) | |
tree | ce2f637c21a01584aad170f752e4b79f53f3fcde /src/webenginewidgets/api | |
parent | a79afbeaa0d5a0fe1152c221c063cf8e7304ed73 (diff) |
Do not let print engine multiply number of copies
We print multiple pages by repeatedly drawing in a loop, which works good
for PDF targets, but fails for physical printing. PPK_CopyCount flag is
provided to the printing backend which multiplies our effort in this
case.
Temporarily setting the print engine back to 1 seems to be more
reliable than trying to distinguish between paper of PDF target.
Task-number: QTBUG-104224
Change-Id: Ic1be15c6965e6a739bcd44c8d904ac19f67719b5
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/webenginewidgets/api')
-rw-r--r-- | src/webenginewidgets/api/qwebengineview.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/webenginewidgets/api/qwebengineview.cpp b/src/webenginewidgets/api/qwebengineview.cpp index 0e5e9d077..927026050 100644 --- a/src/webenginewidgets/api/qwebengineview.cpp +++ b/src/webenginewidgets/api/qwebengineview.cpp @@ -58,6 +58,7 @@ #if QT_CONFIG(webengine_printing_and_pdf) #include "printing/printer_worker.h" +#include <QPrintEngine> #include <QPrinter> #include <QThread> #endif @@ -800,7 +801,11 @@ void QWebEngineViewPrivate::didPrintPage(QPrinter *¤tPrinter, QSharedPoint printerWorker->m_documentCopies = currentPrinter->copyCount(); printerWorker->m_collateCopies = currentPrinter->collateCopies(); - QObject::connect(printerWorker, &QtWebEngineCore::PrinterWorker::resultReady, q, [q, ¤tPrinter](bool success) { + int oldCopyCount = currentPrinter->copyCount(); + currentPrinter->printEngine()->setProperty(QPrintEngine::PPK_CopyCount, 1); + + QObject::connect(printerWorker, &QtWebEngineCore::PrinterWorker::resultReady, q, [q, ¤tPrinter, oldCopyCount](bool success) { + currentPrinter->printEngine()->setProperty(QPrintEngine::PPK_CopyCount, oldCopyCount); currentPrinter = nullptr; Q_EMIT q->printFinished(success); }); |