From 9aad97763cc42ce29b1d64618d6a250af0795534 Mon Sep 17 00:00:00 2001 From: Andreas Traczyk <andreas.traczyk@savoirfairelinux.com> Date: Mon, 24 Jan 2022 13:17:45 -0500 Subject: [PATCH] chatview: base previewengine on QWebEnginePage not QWebEngineView Qt6 allows us to set the RHI backend, however QQuickWidget is only supported when using OpenGL. QWebEngineView instantiation uses QQuickWidget and isn't required as we wish to use the previewengine in a headless mode. So it can just be based on QWebEnginePage. Change-Id: If05ca5c89272704b54c29318803c8773984b087c --- src/previewengine.cpp | 26 ++++++++++---------------- src/previewengine.h | 5 ++--- 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/src/previewengine.cpp b/src/previewengine.cpp index cce8cba28..b5061c731 100644 --- a/src/previewengine.cpp +++ b/src/previewengine.cpp @@ -24,7 +24,7 @@ #include <QWebEngineSettings> PreviewEngine::PreviewEngine(QObject* parent) - : QWebEngineView(qobject_cast<QWidget*>(parent)) + : QWebEnginePage(parent) , pimpl_(new PreviewEnginePrivate(this)) { QWebEngineProfile* profile = QWebEngineProfile::defaultProfile(); @@ -37,8 +37,6 @@ PreviewEngine::PreviewEngine(QObject* parent) profile->setPersistentCookiesPolicy(QWebEngineProfile::NoPersistentCookies); profile->setHttpCacheType(QWebEngineProfile::NoCache); - setPage(new QWebEnginePage(profile, this)); - settings()->setAttribute(QWebEngineSettings::JavascriptEnabled, true); settings()->setAttribute(QWebEngineSettings::ScrollAnimatorEnabled, false); settings()->setAttribute(QWebEngineSettings::ErrorPageEnabled, false); @@ -51,27 +49,23 @@ PreviewEngine::PreviewEngine(QObject* parent) settings()->setAttribute(QWebEngineSettings::XSSAuditingEnabled, false); settings()->setAttribute(QWebEngineSettings::LocalContentCanAccessFileUrls, true); - setContextMenuPolicy(Qt::ContextMenuPolicy::NoContextMenu); - channel_ = new QWebChannel(this); channel_->registerObject(QStringLiteral("jsbridge"), pimpl_); - page()->setWebChannel(channel_); - page()->runJavaScript(Utils::QByteArrayFromFile(":/linkify.js"), QWebEngineScript::MainWorld); - page()->runJavaScript(Utils::QByteArrayFromFile(":/linkify-string.js"), - QWebEngineScript::MainWorld); - page()->runJavaScript(Utils::QByteArrayFromFile(":/qwebchannel.js"), - QWebEngineScript::MainWorld); - page()->runJavaScript(Utils::QByteArrayFromFile(":/previewInfo.js"), - QWebEngineScript::MainWorld); - page()->runJavaScript(Utils::QByteArrayFromFile(":/misc/previewInterop.js"), - QWebEngineScript::MainWorld); + setWebChannel(channel_); + runJavaScript(Utils::QByteArrayFromFile(":/linkify.js"), QWebEngineScript::MainWorld); + runJavaScript(Utils::QByteArrayFromFile(":/linkify-string.js"), QWebEngineScript::MainWorld); + runJavaScript(Utils::QByteArrayFromFile(":/qwebchannel.js"), QWebEngineScript::MainWorld); + runJavaScript(Utils::QByteArrayFromFile(":/previewInfo.js"), QWebEngineScript::MainWorld); + runJavaScript(Utils::QByteArrayFromFile(":/misc/previewInterop.js"), + QWebEngineScript::MainWorld); } void PreviewEngine::parseMessage(const QString& messageId, const QString& msg, bool showPreview) { - page()->runJavaScript(QString("parseMessage(`%1`, `%2`, %3)").arg(messageId, msg, showPreview ? "true" : "false")); + runJavaScript( + QString("parseMessage(`%1`, `%2`, %3)").arg(messageId, msg, showPreview ? "true" : "false")); } void diff --git a/src/previewengine.h b/src/previewengine.h index 3122ad739..ea57f296a 100644 --- a/src/previewengine.h +++ b/src/previewengine.h @@ -22,8 +22,7 @@ #include "utils.h" #include <QtWebChannel> -#include <QtWebEngineCore> -#include <QWebEngineView> +#include <QWebEnginePage> class PreviewEngine; @@ -43,7 +42,7 @@ private: PreviewEngine* parent_; }; -class PreviewEngine : public QWebEngineView +class PreviewEngine : public QWebEnginePage { Q_OBJECT public: -- GitLab