summaryrefslogtreecommitdiffstats
path: root/src/webenginequick/api/qquickwebengineview.cpp
diff options
context:
space:
mode:
authorMoss Heim <moss.heim@qt.io>2024-05-23 16:06:24 +0200
committerMoss Heim <moss.heim@qt.io>2024-05-31 16:09:34 +0200
commit378cb6138801b21c643348807b1749a732e7b8e1 (patch)
tree833597bc0da5c988a3c55aaa2092987c4d08b860 /src/webenginequick/api/qquickwebengineview.cpp
parentd825fca2d3c88117aa50269bbe09f5cd49d96ac7 (diff)
Merge printToPdf callback systems
Provide a common API in WebContentsAdapterClient so it can be used easily by QWebEngineFrame. Change-Id: I9abc1214cf535c3110d54d9ecb3257000c6db5fb Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/webenginequick/api/qquickwebengineview.cpp')
-rw-r--r--src/webenginequick/api/qquickwebengineview.cpp25
1 files changed, 17 insertions, 8 deletions
diff --git a/src/webenginequick/api/qquickwebengineview.cpp b/src/webenginequick/api/qquickwebengineview.cpp
index 411caa0a4..f6bd38780 100644
--- a/src/webenginequick/api/qquickwebengineview.cpp
+++ b/src/webenginequick/api/qquickwebengineview.cpp
@@ -1317,13 +1317,17 @@ void QQuickWebEngineViewPrivate::runJavaScript(
adapter->runJavaScript(script, worldId, frameId, callback);
}
-void QQuickWebEngineViewPrivate::didPrintPage(quint64 requestId, QSharedPointer<QByteArray> result)
+void QQuickWebEngineViewPrivate::printToPdf(const QString &filePath, const QPageLayout &layout,
+ const QPageRanges &ranges)
{
- Q_Q(QQuickWebEngineView);
- QJSValue callback = m_printCallbacks.take(requestId);
- QJSValueList args;
- args.append(qmlEngine(q)->toScriptValue(*(result.data())));
- callback.call(args);
+ adapter->printToPDF(layout, ranges, filePath);
+}
+
+void QQuickWebEngineViewPrivate::printToPdf(
+ std::function<void(QSharedPointer<QByteArray>)> &&callback, const QPageLayout &layout,
+ const QPageRanges &ranges)
+{
+ adapter->printToPDFCallbackResult(std::move(callback), layout, ranges);
}
void QQuickWebEngineViewPrivate::didPrintPageToPdf(const QString &filePath, bool success)
@@ -1603,8 +1607,13 @@ void QQuickWebEngineView::printToPdf(const QJSValue &callback, PrintedPageSizeId
return;
d->ensureContentsAdapter();
- quint64 requestId = d->adapter->printToPDFCallbackResult(pageLayout, ranges);
- d->m_printCallbacks.insert(requestId, callback);
+ std::function wrappedCallback = [this, callback](QSharedPointer<QByteArray> result) {
+ QJSValueList args;
+ args.append(qmlEngine(this)->toScriptValue(*result));
+ callback.call(args);
+ };
+
+ d->printToPdf(std::move(wrappedCallback), pageLayout, ranges);
#else
Q_UNUSED(pageSizeId);
Q_UNUSED(orientation);