summaryrefslogtreecommitdiffstats
path: root/src/webenginewidgets/api
diff options
context:
space:
mode:
authorSzabolcs David <davidsz@inf.u-szeged.hu>2022-09-12 16:46:05 +0200
committerSzabolcs David <davidsz@inf.u-szeged.hu>2022-09-14 20:08:07 +0200
commitd783666ffed88dc432a686e7e2c92eefad43f4cd (patch)
treece2f637c21a01584aad170f752e4b79f53f3fcde /src/webenginewidgets/api
parenta79afbeaa0d5a0fe1152c221c063cf8e7304ed73 (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.cpp7
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 *&currentPrinter, QSharedPoint
printerWorker->m_documentCopies = currentPrinter->copyCount();
printerWorker->m_collateCopies = currentPrinter->collateCopies();
- QObject::connect(printerWorker, &QtWebEngineCore::PrinterWorker::resultReady, q, [q, &currentPrinter](bool success) {
+ int oldCopyCount = currentPrinter->copyCount();
+ currentPrinter->printEngine()->setProperty(QPrintEngine::PPK_CopyCount, 1);
+
+ QObject::connect(printerWorker, &QtWebEngineCore::PrinterWorker::resultReady, q, [q, &currentPrinter, oldCopyCount](bool success) {
+ currentPrinter->printEngine()->setProperty(QPrintEngine::PPK_CopyCount, oldCopyCount);
currentPrinter = nullptr;
Q_EMIT q->printFinished(success);
});