diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2021-06-08 13:18:16 +0200 |
---|---|---|
committer | Qt Cherry-pick Bot <cherrypick_bot@qt-project.org> | 2021-06-24 17:26:00 +0000 |
commit | 1fe6080e506ae531072d02c9c976c91a85f17660 (patch) | |
tree | 7b81866a8a8206d9b088161e3d3451bfc0b5e07d | |
parent | 2fcef65b47951ad38d10aabb0f88aa8411a4ce93 (diff) |
Switch printToPdf to std::function
Change-Id: I2660e60665542681bc9b0a479ce7fd9d93b896ae
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
(cherry picked from commit 233d61a0cb0b66ce2f3d548046acd90cdfa39cc3)
Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
-rw-r--r-- | src/webenginewidgets/api/qwebengineview.cpp | 17 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebengineview.h | 3 | ||||
-rw-r--r-- | src/webenginewidgets/api/qwebengineview_p.h | 3 |
3 files changed, 13 insertions, 10 deletions
diff --git a/src/webenginewidgets/api/qwebengineview.cpp b/src/webenginewidgets/api/qwebengineview.cpp index 9d5639ca2..64acaf607 100644 --- a/src/webenginewidgets/api/qwebengineview.cpp +++ b/src/webenginewidgets/api/qwebengineview.cpp @@ -517,7 +517,8 @@ void QWebEngineViewPrivate::didPrintPage(quint64 requestId, QSharedPointer<QByte if (!currentPrinter) { if (!result.data()) return; - m_callbacks.invoke(requestId, *(result.data())); + if (auto callback = m_pdfResultCallbacks.take(requestId)) + callback(*(result.data())); return; } @@ -545,7 +546,8 @@ void QWebEngineViewPrivate::didPrintPage(quint64 requestId, QSharedPointer<QByte #else // we should never enter this branch, but just for safe-keeping... Q_UNUSED(result); - m_callbacks.invoke(requestId, QByteArray()); + if (auto callback = m_pdfResultCallbacks.take(requestId)) + callback(QByteArray()); #endif } @@ -1006,21 +1008,24 @@ void QWebEngineView::printToPdf(const QString &filePath, const QPageLayout &layo \since 6.2 */ -void QWebEngineView::printToPdf(const QWebEngineCallback<const QByteArray&> &resultCallback, const QPageLayout &layout, const QPageRanges &ranges) +void QWebEngineView::printToPdf(const std::function<void(const QByteArray&)> &resultCallback, const QPageLayout &layout, const QPageRanges &ranges) { Q_D(QWebEngineView); #if QT_CONFIG(webengine_printing_and_pdf) if (d->currentPrinter) { qWarning("Cannot print to PDF while printing at the same time."); - d->m_callbacks.invokeEmpty(resultCallback); + if (resultCallback) + resultCallback(QByteArray()); return; } page()->d_ptr->ensureInitialized(); quint64 requestId = page()->d_ptr->adapter->printToPDFCallbackResult(layout, ranges); - d->m_callbacks.registerCallback(requestId, resultCallback); + d->m_pdfResultCallbacks.insert(requestId, resultCallback); #else Q_UNUSED(layout); - d->m_callbacks.invokeEmpty(resultCallback); + Q_UNUSED(ranges); + if (resultCallback) + resultCallback(QByteArray()); #endif } diff --git a/src/webenginewidgets/api/qwebengineview.h b/src/webenginewidgets/api/qwebengineview.h index b43552211..30b24f38d 100644 --- a/src/webenginewidgets/api/qwebengineview.h +++ b/src/webenginewidgets/api/qwebengineview.h @@ -46,7 +46,6 @@ #include <QtWidgets/qwidget.h> #include <QtWebEngineWidgets/qtwebenginewidgetsglobal.h> -#include <QtWebEngineCore/qwebenginecallback.h> #include <QtWebEngineCore/qwebenginecontextmenurequest.h> #include <QtWebEngineCore/qwebenginehttprequest.h> #include <QtWebEngineCore/qwebenginepage.h> @@ -113,7 +112,7 @@ public: void printToPdf(const QString &filePath, const QPageLayout &layout = QPageLayout(QPageSize(QPageSize::A4), QPageLayout::Portrait, QMarginsF()), const QPageRanges &ranges = {}); - void printToPdf(const QWebEngineCallback<const QByteArray&> &resultCallback, + void printToPdf(const std::function<void(const QByteArray&)> &resultCallback, const QPageLayout &layout = QPageLayout(QPageSize(QPageSize::A4), QPageLayout::Portrait, QMarginsF()), const QPageRanges &ranges = {}); void print(QPrinter *printer); diff --git a/src/webenginewidgets/api/qwebengineview_p.h b/src/webenginewidgets/api/qwebengineview_p.h index d49b0e74e..af395fb39 100644 --- a/src/webenginewidgets/api/qwebengineview_p.h +++ b/src/webenginewidgets/api/qwebengineview_p.h @@ -52,7 +52,6 @@ // #include <QtWebEngineWidgets/qwebengineview.h> -#include <QtWebEngineCore/private/qwebenginecallback_p.h> #include <QtWebEngineCore/private/qwebenginepage_p.h> #include <QtWebEngineCore/qwebenginecontextmenurequest.h> #include <QtWidgets/qaccessiblewidget.h> @@ -118,7 +117,7 @@ public: #if QT_CONFIG(webengine_printing_and_pdf) QPrinter *currentPrinter; #endif - mutable QtWebEngineCore::CallbackDirectory m_callbacks; + QMap<quint64, std::function<void(const QByteArray&)>> m_pdfResultCallbacks; }; #ifndef QT_NO_ACCESSIBILITY |