Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Qt 6 Building Porting #1770

Draft
wants to merge 40 commits into
base: master
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
a4580fc
qt6: CMakeLists: hello qt6
Chiitoo Jul 3, 2024
094c4fb
qt6: guard instances of 'stream.setCodec("UTF-8");' for qt5 only
Chiitoo Jul 3, 2024
a6c7e9c
qt6: move 'QTextCodec' from 'QtCore' to 'QtCore5Compat'
Chiitoo Jul 3, 2024
d6dd1af
qt6: QtWidgets/QDesktopWidget--
Chiitoo Jul 3, 2024
42e0c83
qt6: QNetworkConfigurationManager--
Chiitoo Jul 3, 2024
d3ced1e
qt6: move 'QWebEngineCertificateError' to 'QtWebEngineCore'
Chiitoo Jul 3, 2024
f087fdf
qt6: move 'QWebEngineFullScreenRequest' to 'QtWebEngineCore'
Chiitoo Jul 3, 2024
a6cc5df
qt6: move 'QtWebEngineWidgets' to 'QtWebEngineCore'
Chiitoo Jul 3, 2024
068ea94
qt6: move 'QWebEngineDownloadItem' to 'QWebEngineDownloadRequest'
Chiitoo Jul 3, 2024
c38a4c5
qt6: move 'QActionGroup' to 'QtGui'
Chiitoo Jul 3, 2024
91ca8a3
qt6: move 'QAction' to 'QtGui'
Chiitoo Jul 3, 2024
239ad99
qt6: move 'QFileSystemModel' to 'QtGui'
Chiitoo Jul 3, 2024
3bc2037
qt6: move 'QShortcut' to 'QtGui'
Chiitoo Jul 3, 2024
86563c0
qt6: 's/setMargin/setContentsMargins/'
Chiitoo Jul 3, 2024
df21f28
qt6: 's/QEvent/QEnterEvent/'
Chiitoo Jul 3, 2024
bdb6f67
qt6: 's/TextColorRole/ForegroundRole'
Chiitoo Jul 3, 2024
131ba1c
qt6: 's/QWebEngineDownloadItem/QWebEngineDownloadRequest/'
Chiitoo Jul 3, 2024
2c8655b
qt6: 's/QWebEngineSettings::globalSettings/QWebEngineSettings::defaul…
Chiitoo Jul 3, 2024
ee8a98e
qt6: 's/QApplication::desktop()/QGuiApplication::primaryScreen()/'
Chiitoo Jul 3, 2024
8ef37ae
qt6: 's/HighQualityAntialiasing/Antialiasing/'
Chiitoo Jul 3, 2024
83f4fe7
qt6: 'FollowRedirectsAttribute' has been removed
Chiitoo Jul 3, 2024
f977672
qt6: rename downloadrequest members
Chiitoo Jul 3, 2024
2db31a5
qt6: use 'defaultProfile->settings' instead of 'defaultSettings'
Chiitoo Jul 3, 2024
a179bc7
qt6: include 'QtGui/QActionGroup'
Chiitoo Jul 3, 2024
8b88198
qt6: include 'QtWebEngineCore/QWebEngineHttpRequest'
Chiitoo Jul 3, 2024
6f8a198
qt6: include 'QtCore/QFile'
Chiitoo Jul 3, 2024
8403557
qt6: call to member function 'insert' is ambiguous
Chiitoo Jul 3, 2024
d3145cb
qt6: chosen constructor is explicit in copy-initialization
Chiitoo Jul 3, 2024
784cf2a
qt6: conversion from 'int' to 'QChar' is ambiguous
Chiitoo Jul 3, 2024
445dcd9
qt6: invalid operands to binary expression
Chiitoo Jul 3, 2024
23fd299
qt6: no matching member function for call to 'icon'
Chiitoo Jul 3, 2024
639e286
qt6: no member named 'print' in 'Otter::QtWebEnginePage'
Chiitoo Jul 3, 2024
ce73af3
qt6: no type named 'PromiseType' in 'QtPrivate::ArgResolver<Otter::Ad…
Chiitoo Jul 3, 2024
2b30c7b
qt6: no viable conversion from 'QPixmap' to 'const QCursor'
Chiitoo Jul 3, 2024
d0cab7c
qt6: non-virtual member function marked 'override' hides virtual memb…
Chiitoo Jul 3, 2024
ed03e07
qt6: reference to non-static member function must be called; did you …
Chiitoo Jul 3, 2024
4c8433e
qt6: use of overloaded operator '!=' is ambiguous (with operand types…
Chiitoo Jul 3, 2024
4e27a8e
qt6: linktime undefined reference to `Otter::Utils::createLocale(QStr…
Chiitoo Jul 3, 2024
9f4d8ce
qt6: 'topLevelDomain()' is no more; port to 'qIsEffectiveTLD()'?
Chiitoo Feb 3, 2025
f8e04ee
qt6: call of overloaded ‘mapTo(Otter::ContentsWidget*,
Chiitoo Feb 3, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
358 changes: 260 additions & 98 deletions CMakeLists.txt

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion src/core/ActionsManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -668,11 +668,12 @@ bool ActionsManager::isShortcutAllowed(const QKeySequence &shortcut, ShortcutChe
return false;
}

/* qt6: use of overloaded operator '!=' is ambiguous (with operand types 'QKeyCombination' and 'Qt::Key')
if ((check == AllChecks || check == DisallowSingleKeyShortcutCheck) && (!areSingleKeyShortcutsAllowed && (shortcut[0] == Qt::Key_Plus || !shortcut.toString(QKeySequence::PortableText).contains(QLatin1Char('+'))) && shortcut[0] != Qt::Key_Delete && !(shortcut[0] >= Qt::Key_F1 && shortcut[0] <= Qt::Key_F35)))
{
return false;
}

*/
if (check == AllChecks || check == DisallowStandardShortcutCheck)
{
if (m_disallowedShortcuts.isEmpty())
Expand Down
13 changes: 11 additions & 2 deletions src/core/AdblockContentFiltersProfile.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -78,11 +78,12 @@ void AdblockContentFiltersProfile::clear()
return;
}

/* qt6: no type named 'PromiseType' in 'QtPrivate::ArgResolver<Otter::AdblockContentFiltersProfile *>'
if (m_root)
{
QtConcurrent::run(this, &AdblockContentFiltersProfile::deleteNode, m_root);
}

*/
m_cosmeticFiltersRules.clear();
m_cosmeticFiltersDomainExceptions.clear();
m_cosmeticFiltersDomainRules.clear();
Expand Down Expand Up @@ -295,14 +296,16 @@ void AdblockContentFiltersProfile::parseRuleLine(const QString &rule)
Node *newNode(new Node());
newNode->value = value;

/* qt6: call to member function 'insert' is ambiguous
if (value == QLatin1Char('^'))
{
node->children.insert(0, newNode);
}
else
{
*/
node->children.append(newNode);
}
// }

node = newNode;
}
Expand Down Expand Up @@ -786,7 +789,9 @@ AdblockContentFiltersProfile::HeaderInformation AdblockContentFiltersProfile::lo
{
HeaderInformation information;
QTextStream stream(rulesDevice);
#ifdef OTTER_ENABLE_QT5
stream.setCodec("UTF-8");
#endif

const QString header(stream.readLine());

Expand Down Expand Up @@ -826,7 +831,9 @@ QHash<AdblockContentFiltersProfile::RuleType, quint32> AdblockContentFiltersProf
{
QHash<RuleType, quint32> information({{AnyRule, 0}, {ActiveRule, 0}, {CosmeticRule, 0}, {WildcardRule, 0}});
QTextStream stream(rulesDevice);
#ifdef OTTER_ENABLE_QT5
stream.setCodec("UTF-8");
#endif
stream.readLine();

while (!stream.atEnd())
Expand Down Expand Up @@ -1051,7 +1058,9 @@ bool AdblockContentFiltersProfile::loadRules()
file.open(QIODevice::ReadOnly | QIODevice::Text);

QTextStream stream(&file);
#ifdef OTTER_ENABLE_QT5
stream.setCodec("UTF-8");
#endif
stream.readLine(); // skip header

m_root = new Node();
Expand Down
2 changes: 1 addition & 1 deletion src/core/AdblockContentFiltersProfile.h
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ class AdblockContentFiltersProfile final : public ContentFiltersProfile
bool needsDomainCheck = false;
};

QChar value = 0;
QChar value;
QVarLengthArray<Node*, 1> children;
QVarLengthArray<Rule*, 1> rules;
};
Expand Down
2 changes: 2 additions & 0 deletions src/core/AddonsManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,9 @@ QString JsonAddon::formatComment(const QString &type)
{
QString comment;
QTextStream stream(&comment);
#ifdef OTTER_ENABLE_QT5
stream.setCodec("UTF-8");
#endif
stream << QLatin1String("Title: ") << (m_metaData.title.isEmpty() ? QT_TR_NOOP("(Untitled)") : m_metaData.title) << QLatin1Char('\n');
stream << QLatin1String("Description: ") << m_metaData.description << QLatin1Char('\n');
stream << QLatin1String("Type: ") << type << QLatin1String("\n");
Expand Down
2 changes: 2 additions & 0 deletions src/core/Application.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1281,7 +1281,9 @@ void Application::setLocale(const QString &locale)
m_qtTranslator->load(QLatin1String("qt_") + (useSystemLocale ? systemLocale : identifier), QLibraryInfo::location(QLibraryInfo::TranslationsPath));
m_applicationTranslator->load((locale.endsWith(QLatin1String(".qm")) ? locale : QLatin1String("otter-browser_") + (useSystemLocale ? systemLocale : locale)), m_localePath);

/* qt6: linktime undefined reference to `Otter::Utils::createLocale(QString const&)'
QLocale::setDefault(Utils::createLocale(identifier));
*/
}

MainWindow* Application::createWindow(const QVariantMap &parameters, const Session::MainWindow &session)
Expand Down
4 changes: 4 additions & 0 deletions src/core/IniSettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,9 @@ IniSettings::IniSettings(const QString &path, QObject *parent) : QObject(parent)
QStringList comment;
bool isHeader(true);
QTextStream stream(&file);
#ifdef OTTER_ENABLE_QT5
stream.setCodec("UTF-8");
#endif

while (!stream.atEnd())
{
Expand Down Expand Up @@ -227,7 +229,9 @@ bool IniSettings::save(const QString &path, bool isAtomic)

bool canAddNewLine(false);
QTextStream stream(file);
#ifdef OTTER_ENABLE_QT5
stream.setCodec("UTF-8");
#endif

if (!m_comment.isEmpty())
{
Expand Down
4 changes: 4 additions & 0 deletions src/core/JsonSettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,9 @@ JsonSettings::JsonSettings(const QString &path) :

QStringList comment;
QTextStream stream(&file);
#ifdef OTTER_ENABLE_QT5
stream.setCodec("UTF-8");
#endif

while (!stream.atEnd())
{
Expand Down Expand Up @@ -239,7 +241,9 @@ bool JsonSettings::save(const QString &path, bool isAtomic)
if (!m_comment.isEmpty())
{
QTextStream stream(file);
#ifdef OTTER_ENABLE_QT5
stream.setCodec("UTF-8");
#endif

const QStringList comment(m_comment.split(QLatin1Char('\n')));

Expand Down
2 changes: 2 additions & 0 deletions src/core/ListingNetworkReply.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,9 @@ QByteArray ListingNetworkReply::createListing(const QString &title, const QVecto
file.open(QIODevice::ReadOnly | QIODevice::Text);

QTextStream stream(&file);
#ifdef OTTER_ENABLE_QT5
stream.setCodec("UTF-8");
#endif

QString navigationHtml;
QString entriesHtml;
Expand Down
3 changes: 2 additions & 1 deletion src/core/NetworkManagerFactory.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@
#include <QtCore/QJsonArray>
#include <QtCore/QJsonDocument>
#include <QtCore/QJsonObject>
#include <QtNetwork/QNetworkConfigurationManager>
#include <QtNetwork/QSslConfiguration>

namespace Otter
Expand Down Expand Up @@ -664,7 +663,9 @@ CookieJar* NetworkManagerFactory::getCookieJar()
QNetworkReply* NetworkManagerFactory::createRequest(const QUrl &url, QNetworkAccessManager::Operation operation, bool isPrivate, QIODevice *outgoingData)
{
QNetworkRequest request(url);
/* qt6: 'FollowRedirectsAttribute' has been removed
request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);
*/
request.setHeader(QNetworkRequest::UserAgentHeader, getUserAgent());

return getNetworkManager(isPrivate)->createRequest(operation, request, outgoingData);
Expand Down
4 changes: 4 additions & 0 deletions src/core/SessionsManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -439,10 +439,14 @@ QStringList SessionsManager::getSessions()
sessions.append(entries.at(i).completeBaseName());
}

/* qt6: invalid operands to binary expression ('const QFileInfo' and 'const QString'
* in instantiation of function template specialization 'QListSpecialMethodsBase<QFileInfo>::contains<QString>' requested here
* contains(m_sessionPath)
if (!m_sessionPath.isEmpty() && !entries.contains(m_sessionPath))
{
sessions.append(m_sessionPath);
}
*/

if (!sessions.contains(QLatin1String("default")))
{
Expand Down
4 changes: 4 additions & 0 deletions src/core/SpellCheckManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -155,7 +155,9 @@ void SpellCheckManager::saveIgnoredWords()
}

QTextStream stream(&file);
#ifdef OTTER_ENABLE_QT5
stream.setCodec("UTF-8");
#endif

QSet<QString>::iterator iterator;

Expand Down Expand Up @@ -281,7 +283,9 @@ QStringList SpellCheckManager::getIgnoredWords()
if (file.open(QIODevice::ReadOnly))
{
QTextStream stream(&file);
#ifdef OTTER_ENABLE_QT5
stream.setCodec("UTF-8");
#endif

while (!stream.atEnd())
{
Expand Down
8 changes: 8 additions & 0 deletions src/core/TransfersManager.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -678,9 +678,12 @@ QString Transfer::getTarget() const

QIcon Transfer::getIcon() const
{
/* qt6: no matching member function for call to 'icon'
const QString iconName(getMimeType().iconName());

return QIcon::fromTheme(iconName, QFileIconProvider().icon(iconName));
*/
return QIcon(); // qt6
}

QDateTime Transfer::getTimeStarted() const
Expand Down Expand Up @@ -1211,6 +1214,11 @@ Transfer* TransfersManager::startTransfer(const QUrl &source, const QString &tar
{
QNetworkRequest request;
request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysNetwork);

#ifdef OTTER_ENABLE_QT5
// qt6: 'FollowRedirectsAttribute' has been removed
request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true);
#endif
request.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy);
request.setHeader(QNetworkRequest::UserAgentHeader, NetworkManagerFactory::getUserAgent());
request.setUrl(QUrl(source));
Expand Down
2 changes: 2 additions & 0 deletions src/core/UserScript.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -424,10 +424,12 @@ bool UserScript::checkUrl(const QUrl &url, const QStringList &rules) const
return QRegularExpression(rule.mid(1, rule.length() - 2)).match(url.url()).hasMatch();
}

#ifdef OTTER_ENABLE_QT5
if (rule.contains(QLatin1String(".tld"), Qt::CaseInsensitive))
{
rule.replace(QLatin1String(".tld"), Utils::getTopLevelDomain(url), Qt::CaseInsensitive);
}
#endif

bool useExactMatch(true);

Expand Down
14 changes: 12 additions & 2 deletions src/core/Utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@
#include <QtGui/QDesktopServices>
#include <QtGui/QDrag>
#include <QtWidgets/QApplication>
#include <QtWidgets/QDesktopWidget>
#include <QtWidgets/QFileDialog>
#include <QtWidgets/QMessageBox>

Expand Down Expand Up @@ -260,7 +259,9 @@ QString createErrorPage(const ErrorPageInformation &information)
file.open(QIODevice::ReadOnly | QIODevice::Text);

QTextStream stream(&file);
#ifdef OTTER_ENABLE_QT5
stream.setCodec("UTF-8");
#endif

QString mainTemplate(stream.readAll());
const QRegularExpression advancedActionsExpression(QLatin1String("<!--advancedActions:begin-->(.*)<!--advancedActions:end-->"), (QRegularExpression::DotMatchesEverythingOption | QRegularExpression::MultilineOption));
Expand Down Expand Up @@ -384,10 +385,12 @@ QString appendShortcut(const QString &text, const QKeySequence &shortcut)

QString elideText(const QString &text, const QFontMetrics &fontMetrics, QWidget *widget, int maximumWidth, int minimumWidth)
{
/* qt6: no matching function for call to ‘QScreen::geometry()
if (widget && maximumWidth < 0)
{
maximumWidth = (QApplication::desktop()->screenGeometry(widget).width() / 4);
maximumWidth = (QGuiApplication::primaryScreen()->geometry(widget).width() / 4);
}
*/

return fontMetrics.elidedText(text, Qt::ElideRight, qMax(minimumWidth, maximumWidth));
}
Expand Down Expand Up @@ -541,10 +544,12 @@ QString normalizePath(const QString &path)
return path;
}

#ifdef OTTER_ENABLE_QT5 // qt6: ‘const class QUrl’ has no member named ‘topLevelDomain’
QString getTopLevelDomain(const QUrl &url)
{
return url.topLevelDomain();
}
#endif

QString getStandardLocation(QStandardPaths::StandardLocation type)
{
Expand Down Expand Up @@ -593,6 +598,7 @@ QColor createColor(const QUrl &url)
return QColor(hash.at(0), hash.at(1), hash.at(2));
}

#ifdef OTTER_ENABLE_QT5 // qt6: chosen constructor is explicit in copy-initialization
QLocale createLocale(const QString &name)
{
if (name == QLatin1String("pt"))
Expand All @@ -602,6 +608,7 @@ QLocale createLocale(const QString &name)

return {name};
}
#endif

QPixmap loadPixmapFromDataUri(const QString &data)
{
Expand Down Expand Up @@ -774,6 +781,7 @@ bool ensureDirectoryExists(const QString &path)

bool isDomainTheSame(const QUrl &firstUrl, const QUrl &secondUrl)
{
#ifdef OTTER_ENABLE_QT5 // qt6: 'topLevelDomain()' is no more; port to 'qIsEffectiveTLD()'?
const QString firstTld(getTopLevelDomain(firstUrl));
const QString secondTld(getTopLevelDomain(secondUrl));

Expand All @@ -789,6 +797,8 @@ bool isDomainTheSame(const QUrl &firstUrl, const QUrl &secondUrl)
secondDomain.remove((secondDomain.length() - secondTld.length()), secondTld.length());

return firstDomain.section(QLatin1Char('.'), -1) == secondDomain.section(QLatin1Char('.'), -1);
#endif
return false;
}

bool isUrl(const QString &text)
Expand Down
69 changes: 49 additions & 20 deletions src/modules/backends/web/qtwebengine/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -1,26 +1,55 @@
find_package(Qt5 5.15.0 QUIET COMPONENTS WebEngineWidgets)
if (ENABLE_QT5)
find_package(Qt5 ${MIN_VERSION_QT5} QUIET COMPONENTS WebEngineWidgets)

set_package_properties(Qt5WebEngineCore PROPERTIES URL "https://www.qt.io/" DESCRIPTION "QtWebEngine based backend (core)" TYPE OPTIONAL)
set_package_properties(Qt5WebEngineWidgets PROPERTIES URL "https://www.qt.io/" DESCRIPTION "QtWebEngine based backend (widgets)" TYPE OPTIONAL)
set_package_properties(Qt5WebEngineCore PROPERTIES URL "https://www.qt.io/" DESCRIPTION "QtWebEngine based backend (core)" TYPE OPTIONAL)
set_package_properties(Qt5WebEngineWidgets PROPERTIES URL "https://www.qt.io/" DESCRIPTION "QtWebEngine based backend (widgets)" TYPE OPTIONAL)

if (NOT TARGET Qt5::WebEngineWidgets)
return ()
endif ()
if (NOT TARGET Qt5::WebEngineWidgets)
return ()
endif ()

add_definitions(-DOTTER_ENABLE_QTWEBENGINE)

list(APPEND OTTER_BACKENDS_WEB "QtWebEngine")
list(APPEND OTTER_LINK_LIBRARIES Qt5::WebEngineCore Qt5::WebEngineWidgets)

set(OTTER_SOURCES
${OTTER_SOURCES}
src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp
src/modules/backends/web/qtwebengine/QtWebEngineUrlRequestInterceptor.cpp
src/modules/backends/web/qtwebengine/QtWebEngineTransfer.cpp
src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp
src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp
)

add_definitions(-DOTTER_ENABLE_QTWEBENGINE)
qt5_add_resources(OTTER_RESOURCES
src/modules/backends/web/qtwebengine/QtWebEngineResources.qrc
)
elseif (ENABLE_QT6)
find_package(Qt6 ${MIN_VERSION_QT6} QUIET COMPONENTS WebEngineWidgets)

list(APPEND OTTER_BACKENDS_WEB "QtWebEngine")
list(APPEND OTTER_LINK_LIBRARIES Qt5::WebEngineCore Qt5::WebEngineWidgets)
set_package_properties(Qt6WebEngineCore PROPERTIES URL "https://www.qt.io/" DESCRIPTION "QtWebEngine based backend (core)" TYPE OPTIONAL)
set_package_properties(Qt6WebEngineWidgets PROPERTIES URL "https://www.qt.io/" DESCRIPTION "QtWebEngine based backend (widgets)" TYPE OPTIONAL)

set(OTTER_SOURCES
${OTTER_SOURCES}
src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp
src/modules/backends/web/qtwebengine/QtWebEngineUrlRequestInterceptor.cpp
src/modules/backends/web/qtwebengine/QtWebEngineTransfer.cpp
src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp
src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp
)
if (NOT TARGET Qt6::WebEngineWidgets)
return ()
endif ()

qt5_add_resources(OTTER_RESOURCES
src/modules/backends/web/qtwebengine/QtWebEngineResources.qrc
)
add_definitions(-DOTTER_ENABLE_QTWEBENGINE)

list(APPEND OTTER_BACKENDS_WEB "QtWebEngine")
list(APPEND OTTER_LINK_LIBRARIES Qt6::WebEngineCore Qt6::WebEngineWidgets)

set(OTTER_SOURCES
${OTTER_SOURCES}
src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp
src/modules/backends/web/qtwebengine/QtWebEngineUrlRequestInterceptor.cpp
src/modules/backends/web/qtwebengine/QtWebEngineTransfer.cpp
src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp
src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp
)

qt6_add_resources(OTTER_RESOURCES
src/modules/backends/web/qtwebengine/QtWebEngineResources.qrc
)
endif ()
Loading