From e50f5b0a22e49999edf30a7268e9879bd3c5cd3a Mon Sep 17 00:00:00 2001 From: Jimi Huotari Date: Thu, 4 Jul 2024 01:07:29 +0300 Subject: [PATCH 01/14] qt6: CMakeLists: hello qt6 Add options to define building either against Qt 5 or Qt 6, as well as necessary 'if' statements to go along with them. --- CMakeLists.txt | 77 ++++++++++++------- .../backends/web/qtwebengine/CMakeLists.txt | 28 +++++-- .../backends/web/qtwebkit/CMakeLists.txt | 16 ++-- 3 files changed, 82 insertions(+), 39 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index fafa513a27..192d2bcc9c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.7.0) +cmake_minimum_required(VERSION 3.16) project(otter-browser) @@ -69,15 +69,25 @@ include(FeatureSummary) include(GNUInstallDirs) option(ALLOW_WITHOUT_WEB_BACKENDS "Allow to build without any web backends (build testing only)" OFF) -option(ENABLE_QTWEBENGINE "Enable QtWebEngine backend (requires QtWebEngine 5.15)" ON) -option(ENABLE_QTWEBKIT "Enable QtWebKit backend (requires QtWebKit 5.212)" ON) option(ENABLE_CRASH_REPORTS "Enable built-in crash reporting (official builds only)" OFF) option(ENABLE_DBUS "Enable D-Bus based integration for notifications (only freedesktop.org compatible platforms)" ON) -option(ENABLE_SPELLCHECK "Enable Hunspell based spell checking" ON) - -find_package(Qt5 5.15.0 REQUIRED COMPONENTS Core Gui Multimedia Network PrintSupport Qml Svg Widgets) -find_package(Hunspell 1.5.0 QUIET) +option(ENABLE_SPELLCHECK "Enable Hunspell based spell checking" OFF) +option(ENABLE_QT6 "Build using Qt 6" ON) +option(ENABLE_QTWEBENGINE "Enable QtWebEngine backend (requires Qt WebEngine version ${QT_MINIMUM_VERSION} or higher)" ON) +option(ENABLE_QTWEBKIT "Enable QtWebKit backend (requires QtWebKit ${QT_MINIMUM_VERSION_WEBKIT})" OFF) + +if (NOT ENABLE_QT6) + set(QT_MAJOR_VERSION Qt5) + set(QT_MINIMUM_VERSION 5.15) + set(QT_MINIMUM_VERSION_WEBKIT 5.212) +else () + set(QT_MAJOR_VERSION Qt6) + set(QT_MINIMUM_VERSION 6.2) + find_package(${QT_MAJOR_VERSION} REQUIRED COMPONENTS Core5Compat) +endif () +find_package(${QT_MAJOR_VERSION} REQUIRED COMPONENTS Core Gui Multimedia Network PrintSupport Qml Svg Widgets) +find_package(Hunspell 1.5.0 REQUIRED) set_package_properties(Hunspell PROPERTIES URL "https://hunspell.github.io/" DESCRIPTION "Generic spell checking support" TYPE OPTIONAL) set(OTTER_SOURCES @@ -290,11 +300,7 @@ set(OTTER_SOURCES 3rdparty/qrcodegen/qrcodegen.cpp ) -qt5_add_resources(OTTER_RESOURCES - resources/resources.qrc -) - -qt5_wrap_ui(OTTER_UI +qt_wrap_ui(OTTER_UI src/ui/AcceptCookieDialog.ui src/ui/ActionParametersDialog.ui src/ui/AuthenticationDialog.ui @@ -368,11 +374,14 @@ qt5_wrap_ui(OTTER_UI src/modules/windows/windows/WindowsContentsWidget.ui ) -foreach (_dir ${Qt5Widgets_PRIVATE_INCLUDE_DIRS}) +qt_add_resources(OTTER_RESOURCES + resources/resources.qrc +) + +foreach (_dir ${QT_MAJOR_VERSION}Widgets_PRIVATE_INCLUDE_DIRS}) if (EXISTS "${_dir}/private/qpixmapfilter_p.h") add_definitions(-DOTTER_ENABLE_STARTPAGEBLUR) - include_directories(${Qt5Widgets_PRIVATE_INCLUDE_DIRS}) - + include_directories(${QT_MAJOR_VERSION}Widgets_PRIVATE_INCLUDE_DIRS}) break () endif () endforeach () @@ -448,8 +457,6 @@ endif () if (WIN32) add_definitions(-DUNICODE -D_UNICODE) - find_package(Qt5 5.15.0 QUIET COMPONENTS WinExtras) - if (MSVC) set(CMAKE_PREFIX_PATH $ENV{QTDIR}) set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MP") @@ -470,8 +477,6 @@ if (WIN32) src/modules/platforms/windows/WindowsPlatformStyle.cpp ) elseif (APPLE) - find_package(Qt5 5.15.0 QUIET COMPONENTS MacExtras) - set(CMAKE_OSX_DEPLOYMENT_TARGET 10.13) set(MACOSX_BUNDLE_BUNDLE_NAME "Otter Browser") set(MACOSX_BUNDLE_BUNDLE_VERSION ${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}) @@ -489,9 +494,7 @@ elseif (APPLE) set_source_files_properties(resources/icons/otter-browser.icns PROPERTIES MACOSX_PACKAGE_LOCATION Resources) elseif (UNIX) - find_package(Qt5 5.15.0 QUIET COMPONENTS DBus) - - if (TARGET Qt5::DBus AND ENABLE_DBUS) + if (TARGET ${QT_MAJOR_VERSION}::DBus AND ENABLE_DBUS) add_definitions(-DOTTER_ENABLE_DBUS) endif () @@ -570,17 +573,23 @@ if (TARGET Hunspell::Hunspell AND ENABLE_SPELLCHECK) endif () if (WIN32) - target_link_libraries(otter-browser Qt5::WinExtras ole32 shell32 advapi32 user32) + if (NOT ENABLE_QT6) + target_link_libraries(${QT_MAJOR_VERSION}::WinExtras) + endif () + target_link_libraries(otter-browser ole32 shell32 advapi32 user32) elseif (APPLE) find_library(FRAMEWORK_Cocoa Cocoa) find_library(FRAMEWORK_Foundation Foundation) set_target_properties(otter-browser PROPERTIES OUTPUT_NAME "Otter Browser") - target_link_libraries(otter-browser Qt5::MacExtras ${FRAMEWORK_Cocoa} ${FRAMEWORK_Foundation}) + if (NOT ENABLE_QT6) + target_link_libraries(otter-browser ${QT_MAJOR_VERSION}::MacExtras ${FRAMEWORK_Cocoa} ${FRAMEWORK_Foundation}) + endif () + target_link_libraries(otter-browser ${FRAMEWORK_Cocoa} ${FRAMEWORK_Foundation}) elseif (UNIX) - if (TARGET Qt5::DBus AND ENABLE_DBUS) - target_link_libraries(otter-browser Qt5::DBus) + if (TARGET ${QT_MAJOR_VERSION}::DBus AND ENABLE_DBUS) + target_link_libraries(otter-browser ${QT_MAJOR_VERSION}::DBus) endif () if (ENABLE_CRASH_REPORTS) @@ -588,7 +597,21 @@ elseif (UNIX) endif () endif () -target_link_libraries(otter-browser Qt5::Core Qt5::Gui Qt5::Multimedia Qt5::Network Qt5::PrintSupport Qt5::Qml Qt5::Svg Qt5::Widgets) +target_link_libraries( + otter-browser + ${QT_MAJOR_VERSION}::Core + ${QT_MAJOR_VERSION}::Gui + ${QT_MAJOR_VERSION}::Multimedia + ${QT_MAJOR_VERSION}::Network + ${QT_MAJOR_VERSION}::PrintSupport + ${QT_MAJOR_VERSION}::Qml + ${QT_MAJOR_VERSION}::Svg + ${QT_MAJOR_VERSION}::Widgets +) + +if (ENABLE_QT6) + target_link_libraries(otter-browser ${QT_MAJOR_VERSION}::Core5Compat) +endif () set(XDG_APPS_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/share/applications CACHE FILEPATH "Install path for .desktop files") diff --git a/src/modules/backends/web/qtwebengine/CMakeLists.txt b/src/modules/backends/web/qtwebengine/CMakeLists.txt index 14cb45f11b..b6d55c550d 100644 --- a/src/modules/backends/web/qtwebengine/CMakeLists.txt +++ b/src/modules/backends/web/qtwebengine/CMakeLists.txt @@ -1,16 +1,20 @@ -find_package(Qt5 5.15.0 QUIET COMPONENTS WebEngineWidgets) +if (NOT ENABLE_QTWEBENGINE) + return () +endif () + +find_package(${QT_MAJOR_VERSION} ${QT_MINIMUM_VERSION} REQUIRED COMPONENTS WebEngineCore 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(${QT_MAJOR_VERSION}WebEngineCore PROPERTIES URL "https://www.qt.io/" DESCRIPTION "QtWebEngine based backend (core)" TYPE OPTIONAL) +set_package_properties(${QT_MAJOR_VERSION}WebEngineWidgets PROPERTIES URL "https://www.qt.io/" DESCRIPTION "QtWebEngine based backend (widgets)" TYPE OPTIONAL) -if (NOT TARGET Qt5::WebEngineWidgets) +if (NOT TARGET ${QT_MAJOR_VERSION}::WebEngineWidgets) return () endif () add_definitions(-DOTTER_ENABLE_QTWEBENGINE) list(APPEND OTTER_BACKENDS_WEB "QtWebEngine") -list(APPEND OTTER_LINK_LIBRARIES Qt5::WebEngineCore Qt5::WebEngineWidgets) +list(APPEND OTTER_LINK_LIBRARIES ${QT_MAJOR_VERSION}::WebEngineCore ${QT_MAJOR_VERSION}::WebEngineWidgets) set(OTTER_SOURCES ${OTTER_SOURCES} @@ -21,6 +25,18 @@ set(OTTER_SOURCES src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp ) -qt5_add_resources(OTTER_RESOURCES +qt_add_resources(OTTER_RESOURCES src/modules/backends/web/qtwebengine/QtWebEngineResources.qrc ) + +if (WIN32) + if (NOT ENABLE_QT6) + find_package(Qt5 QUIET COMPONENTS WinExtras) + endif () +elseif (APPLE) + if (NOT ENABLE_QT6) + find_package(Qt5 QUIET COMPONENTS MacExtras) + endif () +elseif (UNIX AND ENABLE_DBUS) + find_package(${QT_MAJOR_VERSION} ${QT_MINIMUM_VERSION} REQUIRED COMPONENTS DBus) +endif () diff --git a/src/modules/backends/web/qtwebkit/CMakeLists.txt b/src/modules/backends/web/qtwebkit/CMakeLists.txt index 59e4801931..4a5c6b771b 100644 --- a/src/modules/backends/web/qtwebkit/CMakeLists.txt +++ b/src/modules/backends/web/qtwebkit/CMakeLists.txt @@ -1,16 +1,20 @@ -find_package(Qt5WebKitWidgets 5.212.0 QUIET) +if (NOT ENABLE_QTWEBKIT) + return () +endif () + +find_package(${QT_MAJOR_VERSION}WebKitWidgets ${QT_MINIMUM_VERSION_WEBKIT} REQUIRED) -set_package_properties(Qt5WebKit PROPERTIES URL "https://qtwebkit.github.io/" DESCRIPTION "QtWebKit based backend (core)" TYPE OPTIONAL) -set_package_properties(Qt5WebKitWidgets PROPERTIES URL "https://qtwebkit.github.io/" DESCRIPTION "QtWebKit based backend (widgets)" TYPE OPTIONAL) +set_package_properties(${QT_MAJOR_VERSION}WebKit PROPERTIES URL "https://qtwebkit.github.io/" DESCRIPTION "QtWebKit based backend (core)" OPTIONAL) +set_package_properties(${QT_MAJOR_VERSION}WebKitWidgets PROPERTIES URL "https://qtwebkit.github.io/" DESCRIPTION "QtWebKit based backend (widgets)" TYPE OPTIONAL) -if (NOT TARGET Qt5::WebKitWidgets) +if (NOT TARGET ${QT_MAJOR_VERSION}::WebKitWidgets) return () endif () add_definitions(-DOTTER_ENABLE_QTWEBKIT -DOTTER_QTWEBKIT_PLUGINS_AVAILABLE -DQT_STATICPLUGIN) list(APPEND OTTER_BACKENDS_WEB "QtWebKit") -list(APPEND OTTER_LINK_LIBRARIES Qt5::WebKit Qt5::WebKitWidgets) +list(APPEND OTTER_LINK_LIBRARIES ${QT_MAJOR_VERSION}::WebKit ${QT_MAJOR_VERSION}::WebKitWidgets) set(OTTER_SOURCES ${OTTER_SOURCES} @@ -36,6 +40,6 @@ if (TARGET Hunspell::Hunspell AND ENABLE_SPELLCHECK) ) endif () -qt5_add_resources(OTTER_RESOURCES +qt_add_resources(OTTER_RESOURCES src/modules/backends/web/qtwebkit/QtWebKitResources.qrc ) From 7f067dcaeb762f177b79327c8f8f1b4f5f290bf3 Mon Sep 17 00:00:00 2001 From: Jimi Huotari Date: Thu, 4 Jul 2024 01:07:33 +0300 Subject: [PATCH 02/14] qt6: move 'QWebEngineCertificateError' to 'QtWebEngineCore' --- src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp | 2 +- src/modules/backends/web/qtwebengine/QtWebEnginePage.h | 8 +++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp b/src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp index deea082a4a..cbad2c489d 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp @@ -603,7 +603,7 @@ bool QtWebEnginePage::acceptNavigationRequest(const QUrl &url, NavigationType ty return true; } -bool QtWebEnginePage::certificateError(const QWebEngineCertificateError &error) +bool QtWebEnginePage::handleCertificateError(QWebEngineCertificateError error) { if (!m_widget || error.certificateChain().isEmpty()) { diff --git a/src/modules/backends/web/qtwebengine/QtWebEnginePage.h b/src/modules/backends/web/qtwebengine/QtWebEnginePage.h index 5896be704e..bf3774eea8 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEnginePage.h +++ b/src/modules/backends/web/qtwebengine/QtWebEnginePage.h @@ -24,8 +24,8 @@ #include "../../../../core/SessionsManager.h" #include "../../../../ui/WebWidget.h" -#include -#include +#include +#include namespace Otter { @@ -69,7 +69,6 @@ class QtWebEnginePage final : public QWebEnginePage QString createJavaScriptList(const QStringList &rules) const; QStringList chooseFiles(FileSelectionMode mode, const QStringList &oldFiles, const QStringList &acceptedMimeTypes) override; bool acceptNavigationRequest(const QUrl &url, NavigationType type, bool isMainFrame) override; - bool certificateError(const QWebEngineCertificateError &error) override; bool javaScriptConfirm(const QUrl &url, const QString &message) override; bool javaScriptPrompt(const QUrl &url, const QString &message, const QString &defaultValue, QString *result) override; @@ -87,6 +86,9 @@ protected slots: bool m_isViewingMedia; bool m_isPopup; +private slots: + bool handleCertificateError(QWebEngineCertificateError error); + signals: void requestedNewWindow(WebWidget *widget, SessionsManager::OpenHints hints, const QVariantMap ¶meters); void requestedPopupWindow(const QUrl &parentUrl, const QUrl &popupUrl); From 6d4d525a008379b5aeffb5afba4d5602f709e397 Mon Sep 17 00:00:00 2001 From: Jimi Huotari Date: Thu, 4 Jul 2024 01:07:33 +0300 Subject: [PATCH 03/14] qt6: move 'QWebEngineFullScreenRequest' to 'QtWebEngineCore' --- src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h index a624874847..fb77e2bf4b 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h @@ -23,7 +23,7 @@ #include "../../../../ui/WebWidget.h" #include -#include +#include #include namespace Otter From bdb5659be3883949afb2abab457742256c402a24 Mon Sep 17 00:00:00 2001 From: Jimi Huotari Date: Thu, 4 Jul 2024 01:07:33 +0300 Subject: [PATCH 04/14] qt6: move 'QtWebEngineWidgets' to 'QtWebEngineCore' --- .../backends/web/qtwebengine/QtWebEnginePage.cpp | 10 +++++----- .../backends/web/qtwebengine/QtWebEngineWebBackend.cpp | 4 ++-- .../backends/web/qtwebengine/QtWebEngineWebWidget.cpp | 8 ++++---- 3 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp b/src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp index cbad2c489d..52843179fa 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp @@ -33,11 +33,11 @@ #include #include -#include -#include -#include -#include -#include +#include +#include +#include +#include +#include #include namespace Otter diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp b/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp index fac7107d08..34060080e5 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp @@ -35,8 +35,8 @@ #include #include #include -#include -#include +#include +#include namespace Otter { diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp index 58143ee3a9..b9ede6cc11 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp @@ -53,10 +53,10 @@ #include #include #include -#include -#include -#include -#include +#include +#include +#include +#include #include #include From 37f8dd30a0f75c3bfc2e5db29553cf0a67b63dbe Mon Sep 17 00:00:00 2001 From: Jimi Huotari Date: Thu, 4 Jul 2024 01:07:33 +0300 Subject: [PATCH 05/14] qt6: move 'QWebEngineDownloadItem' to 'QWebEngineDownloadRequest' --- src/modules/backends/web/qtwebengine/QtWebEngineTransfer.h | 6 +++--- .../backends/web/qtwebengine/QtWebEngineWebBackend.h | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineTransfer.h b/src/modules/backends/web/qtwebengine/QtWebEngineTransfer.h index 8150ba5a00..1dc8188b59 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineTransfer.h +++ b/src/modules/backends/web/qtwebengine/QtWebEngineTransfer.h @@ -22,7 +22,7 @@ #include "../../../../core/TransfersManager.h" -#include +#include namespace Otter { @@ -32,7 +32,7 @@ class QtWebEngineTransfer final : public Transfer Q_OBJECT public: - explicit QtWebEngineTransfer(QWebEngineDownloadItem *item, TransferOptions options = CanAskForPathOption, QObject *parent = nullptr); + explicit QtWebEngineTransfer(QWebEngineDownloadRequest *item, TransferOptions options = CanAskForPathOption, QObject *parent = nullptr); QUrl getSource() const override; QString getSuggestedFileName() override; @@ -47,7 +47,7 @@ public slots: bool setTarget(const QString &target, bool canOverwriteExisting = false) override; private: - QPointer m_item; + QPointer m_item; }; } diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.h b/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.h index bed5508126..bcfca6fdae 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.h +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.h @@ -24,7 +24,7 @@ #include "../../../../core/WebBackend.h" #include -#include +#include #include @@ -57,7 +57,7 @@ class QtWebEngineWebBackend final : public WebBackend static void showNotification(std::unique_ptr nativeNotification); protected slots: - void handleDownloadRequested(QWebEngineDownloadItem *item); + void handleDownloadRequested(QWebEngineDownloadRequest *item); void handleOptionChanged(int identifier); private: From 76ba9c6d86c2ac83e383e01d47a2aa2230b6521d Mon Sep 17 00:00:00 2001 From: Jimi Huotari Date: Thu, 4 Jul 2024 01:07:34 +0300 Subject: [PATCH 06/14] qt6: 's/QWebEngineDownloadItem/QWebEngineDownloadRequest/' --- .../web/qtwebengine/QtWebEngineTransfer.cpp | 24 +++++++++---------- .../web/qtwebengine/QtWebEngineWebBackend.cpp | 4 ++-- .../web/qtwebengine/QtWebEngineWebWidget.cpp | 8 +++---- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineTransfer.cpp b/src/modules/backends/web/qtwebengine/QtWebEngineTransfer.cpp index dddf874d2d..62b2c45252 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineTransfer.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEngineTransfer.cpp @@ -26,7 +26,7 @@ namespace Otter { -QtWebEngineTransfer::QtWebEngineTransfer(QWebEngineDownloadItem *item, TransferOptions options, QObject *parent) : Transfer(options, parent), +QtWebEngineTransfer::QtWebEngineTransfer(QWebEngineDownloadRequest *item, TransferOptions options, QObject *parent) : Transfer(options, parent), m_item(item) { m_item->accept(); @@ -34,15 +34,15 @@ QtWebEngineTransfer::QtWebEngineTransfer(QWebEngineDownloadItem *item, TransferO markAsStarted(); - connect(m_item, &QWebEngineDownloadItem::finished, this, &QtWebEngineTransfer::markAsFinished); - connect(m_item, &QWebEngineDownloadItem::downloadProgress, this, &QtWebEngineTransfer::handleDownloadProgress); - connect(m_item, &QWebEngineDownloadItem::stateChanged, this, [&](QWebEngineDownloadItem::DownloadState state) + connect(m_item, &QWebEngineDownloadRequest::finished, this, &QtWebEngineTransfer::markAsFinished); + connect(m_item, &QWebEngineDownloadRequest::downloadProgress, this, &QtWebEngineTransfer::handleDownloadProgress); + connect(m_item, &QWebEngineDownloadRequest::stateChanged, this, [&](QWebEngineDownloadRequest::DownloadState state) { switch (state) { - case QWebEngineDownloadItem::DownloadCancelled: - case QWebEngineDownloadItem::DownloadCompleted: - case QWebEngineDownloadItem::DownloadInterrupted: + case QWebEngineDownloadRequest::DownloadCancelled: + case QWebEngineDownloadRequest::DownloadCompleted: + case QWebEngineDownloadRequest::DownloadInterrupted: emit stopped(); break; @@ -136,14 +136,14 @@ Transfer::TransferState QtWebEngineTransfer::getState() const switch (m_item->state()) { - case QWebEngineDownloadItem::DownloadRequested: - case QWebEngineDownloadItem::DownloadInProgress: + case QWebEngineDownloadRequest::DownloadRequested: + case QWebEngineDownloadRequest::DownloadInProgress: return RunningState; - case QWebEngineDownloadItem::DownloadCompleted: + case QWebEngineDownloadRequest::DownloadCompleted: return FinishedState; - case QWebEngineDownloadItem::DownloadCancelled: + case QWebEngineDownloadRequest::DownloadCancelled: return CancelledState; - case QWebEngineDownloadItem::DownloadInterrupted: + case QWebEngineDownloadRequest::DownloadInterrupted: return ErrorState; } diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp b/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp index 34060080e5..4037c81e41 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp @@ -57,9 +57,9 @@ QtWebEngineWebBackend::QtWebEngineWebBackend(QObject *parent) : WebBackend(paren qputenv("QTWEBENGINE_DICTIONARIES_PATH", SpellCheckManager::getDictionariesPath().toLatin1()); } -void QtWebEngineWebBackend::handleDownloadRequested(QWebEngineDownloadItem *item) +void QtWebEngineWebBackend::handleDownloadRequested(QWebEngineDownloadRequest *item) { - if (item->savePageFormat() != QWebEngineDownloadItem::UnknownSaveFormat) + if (item->savePageFormat() != QWebEngineDownloadRequest::UnknownSaveFormat) { return; } diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp index b9ede6cc11..a217b9a5d6 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp @@ -235,7 +235,7 @@ void QtWebEngineWebWidget::triggerAction(int identifier, const QVariantMap ¶ if (information.canSave) { - m_page->save(information.path, QWebEngineDownloadItem::SingleHtmlSaveFormat); + m_page->save(information.path, QWebEngineDownloadRequest::SingleHtmlSaveFormat); } } else @@ -248,11 +248,11 @@ void QtWebEngineWebWidget::triggerAction(int identifier, const QVariantMap ¶ switch (format) { case CompletePageSaveFormat: - m_page->save(path, QWebEngineDownloadItem::CompleteHtmlSaveFormat); + m_page->save(path, QWebEngineDownloadRequest::CompleteHtmlSaveFormat); break; case MhtmlSaveFormat: - m_page->save(path, QWebEngineDownloadItem::MimeHtmlSaveFormat); + m_page->save(path, QWebEngineDownloadRequest::MimeHtmlSaveFormat); break; case PdfSaveFormat: @@ -260,7 +260,7 @@ void QtWebEngineWebWidget::triggerAction(int identifier, const QVariantMap ¶ break; default: - m_page->save(path, QWebEngineDownloadItem::SingleHtmlSaveFormat); + m_page->save(path, QWebEngineDownloadRequest::SingleHtmlSaveFormat); break; } From 63655d08fdb41fcb4f3ac82081159ae2924db057 Mon Sep 17 00:00:00 2001 From: Jimi Huotari Date: Thu, 4 Jul 2024 01:07:34 +0300 Subject: [PATCH 07/14] qt6: 's/QWebEngineSettings::globalSettings/QWebEngineSettings::defaultSettings/' - https://code.qt.io/cgit/qt/qtwebengine.git/commit/?h=6.7&id=8daefcfd8e1bf41ae4d06c7a79a526b81a78dc58 --- .../backends/web/qtwebengine/QtWebEngineWebBackend.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp b/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp index 4037c81e41..67771d302e 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp @@ -141,7 +141,7 @@ void QtWebEngineWebBackend::handleDownloadRequested(QWebEngineDownloadRequest *i void QtWebEngineWebBackend::handleOptionChanged(int identifier) { QWebEngineProfile *profile(QWebEngineProfile::defaultProfile()); - QWebEngineSettings *settings(QWebEngineSettings::globalSettings()); + QWebEngineSettings *settings(QWebEngineSettings::defaultSettings()); switch (identifier) { @@ -229,7 +229,7 @@ WebWidget* QtWebEngineWebBackend::createWidget(const QVariantMap ¶meters, Co ContentFiltersManager::initialize(); QWebEngineProfile *profile(QWebEngineProfile::defaultProfile()); - QWebEngineSettings *settings(QWebEngineSettings::globalSettings()); + QWebEngineSettings *settings(QWebEngineSettings::defaultSettings()); profile->setHttpAcceptLanguage(NetworkManagerFactory::getAcceptLanguage()); profile->setHttpUserAgent(getUserAgent()); From 856a19a0ec5bc85e4ce09f5fba569341da43c461 Mon Sep 17 00:00:00 2001 From: Jimi Huotari Date: Thu, 4 Jul 2024 01:07:34 +0300 Subject: [PATCH 08/14] qt6: 'FollowRedirectsAttribute' has been removed --- src/core/TransfersManager.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/core/TransfersManager.cpp b/src/core/TransfersManager.cpp index de6596abc6..dcf3e87493 100644 --- a/src/core/TransfersManager.cpp +++ b/src/core/TransfersManager.cpp @@ -1208,6 +1208,9 @@ Transfer* TransfersManager::startTransfer(const QUrl &source, const QString &tar { QNetworkRequest request; request.setAttribute(QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::AlwaysNetwork); +#if QT_VERSION < 0x060000 + request.setAttribute(QNetworkRequest::FollowRedirectsAttribute, true); +#endif request.setAttribute(QNetworkRequest::RedirectPolicyAttribute, QNetworkRequest::NoLessSafeRedirectPolicy); request.setHeader(QNetworkRequest::UserAgentHeader, NetworkManagerFactory::getUserAgent()); request.setUrl(QUrl(source)); From 3575030216532b1120efb1409120eadeb777b814 Mon Sep 17 00:00:00 2001 From: Jimi Huotari Date: Thu, 4 Jul 2024 01:07:34 +0300 Subject: [PATCH 09/14] qt6: rename downloadrequest members --- .../backends/web/qtwebengine/QtWebEngineTransfer.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineTransfer.cpp b/src/modules/backends/web/qtwebengine/QtWebEngineTransfer.cpp index 62b2c45252..f218070a05 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineTransfer.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEngineTransfer.cpp @@ -34,8 +34,10 @@ QtWebEngineTransfer::QtWebEngineTransfer(QWebEngineDownloadRequest *item, Transf markAsStarted(); - connect(m_item, &QWebEngineDownloadRequest::finished, this, &QtWebEngineTransfer::markAsFinished); - connect(m_item, &QWebEngineDownloadRequest::downloadProgress, this, &QtWebEngineTransfer::handleDownloadProgress); + connect(m_item, &QWebEngineDownloadRequest::isFinished, this, &QtWebEngineTransfer::markAsFinished); + /* qt6: cannot take the address of an rvalue of type 'QWebEngineDownloadRequest::DownloadState' + connect(m_item, &QWebEngineDownloadRequest::DownloadInProgress, this, &QtWebEngineTransfer::handleDownloadProgress); + */ connect(m_item, &QWebEngineDownloadRequest::stateChanged, this, [&](QWebEngineDownloadRequest::DownloadState state) { switch (state) From 1fd5d6bcdc242426804d58ba991b04b7ac366f66 Mon Sep 17 00:00:00 2001 From: Jimi Huotari Date: Thu, 4 Jul 2024 01:07:34 +0300 Subject: [PATCH 10/14] qt6: use 'defaultProfile->settings' instead of 'defaultSettings' - https://code.qt.io/cgit/qt/qtwebengine.git/commit/?h=6.7&id=0870cc93ad3240f5898f231c8f8b8fd82035206d --- .../backends/web/qtwebengine/QtWebEngineWebBackend.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp b/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp index 67771d302e..aadec49b2b 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp @@ -141,7 +141,7 @@ void QtWebEngineWebBackend::handleDownloadRequested(QWebEngineDownloadRequest *i void QtWebEngineWebBackend::handleOptionChanged(int identifier) { QWebEngineProfile *profile(QWebEngineProfile::defaultProfile()); - QWebEngineSettings *settings(QWebEngineSettings::defaultSettings()); + QWebEngineSettings *settings(QWebEngineProfile::defaultProfile()->settings()); switch (identifier) { @@ -229,7 +229,7 @@ WebWidget* QtWebEngineWebBackend::createWidget(const QVariantMap ¶meters, Co ContentFiltersManager::initialize(); QWebEngineProfile *profile(QWebEngineProfile::defaultProfile()); - QWebEngineSettings *settings(QWebEngineSettings::defaultSettings()); + QWebEngineSettings *settings(QWebEngineProfile::defaultProfile()->settings()); profile->setHttpAcceptLanguage(NetworkManagerFactory::getAcceptLanguage()); profile->setHttpUserAgent(getUserAgent()); From c07017a7b3ff51b952b9485ec2f30b6be7f79ee9 Mon Sep 17 00:00:00 2001 From: Jimi Huotari Date: Thu, 4 Jul 2024 01:07:34 +0300 Subject: [PATCH 11/14] qt6: include 'QtWebEngineCore/QWebEngineHttpRequest' --- src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp index a217b9a5d6..2a4598a028 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp @@ -54,6 +54,7 @@ #include #include #include +#include #include #include #include From db0165bd7b6faed7001430261cba70319406bffd Mon Sep 17 00:00:00 2001 From: Jimi Huotari Date: Thu, 4 Jul 2024 01:07:35 +0300 Subject: [PATCH 12/14] qt6: no member named 'print' in 'Otter::QtWebEnginePage' --- src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp index 2a4598a028..1fddce7922 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp @@ -927,10 +927,12 @@ void QtWebEngineWebWidget::print(QPrinter *printer) { QEventLoop eventLoop; + /* qt6: no member named 'print' in 'Otter::QtWebEnginePage' m_page->print(printer, [&](bool) { eventLoop.quit(); }); + */ eventLoop.exec(); } @@ -1019,10 +1021,12 @@ void QtWebEngineWebWidget::handlePrintRequest() { QEventLoop eventLoop; + /* qt6: no member named 'print' in 'Otter::QtWebEnginePage' m_page->print(printer, [&](bool) { eventLoop.quit(); }); + */ eventLoop.exec(); }); From 7c55e128f5b07243e704593c4d659cda8e3a67de Mon Sep 17 00:00:00 2001 From: Jimi Huotari Date: Mon, 3 Feb 2025 13:11:53 +0200 Subject: [PATCH 13/14] =?UTF-8?q?qt6:=20=E2=80=98const=20class=20QUrl?= =?UTF-8?q?=E2=80=99=20has=20no=20member=20named=20=E2=80=98topLevelDomain?= =?UTF-8?q?=E2=80=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - https://bugreports.qt.io/browse/QTBUG-80308 --- src/core/UserScript.cpp | 2 ++ src/core/Utils.cpp | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/src/core/UserScript.cpp b/src/core/UserScript.cpp index fcd837248c..4b254280b4 100644 --- a/src/core/UserScript.cpp +++ b/src/core/UserScript.cpp @@ -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(); } +#if QT_VERSION < 0x060000 // qt6: ‘const class QUrl’ has no member named ‘topLevelDomain’ if (rule.contains(QLatin1String(".tld"), Qt::CaseInsensitive)) { rule.replace(QLatin1String(".tld"), Utils::getTopLevelDomain(url), Qt::CaseInsensitive); } +#endif bool useExactMatch(true); diff --git a/src/core/Utils.cpp b/src/core/Utils.cpp index 8a842245da..eeac5c3a01 100644 --- a/src/core/Utils.cpp +++ b/src/core/Utils.cpp @@ -550,10 +550,12 @@ QString normalizePath(const QString &path) return path; } +#if QT_VERSION < 0x060000 // qt6: ‘const class QUrl’ has no member named ‘topLevelDomain’ QString getTopLevelDomain(const QUrl &url) { return url.topLevelDomain(); } +#endif QString getStandardLocation(QStandardPaths::StandardLocation type) { @@ -802,6 +804,7 @@ bool ensureDirectoryExists(const QString &path) bool isDomainTheSame(const QUrl &firstUrl, const QUrl &secondUrl) { +#if QT_VERSION < 0x060000 // qt6: 'topLevelDomain()' is no more; port to 'qIsEffectiveTLD()'? const QString firstTld(getTopLevelDomain(firstUrl)); const QString secondTld(getTopLevelDomain(secondUrl)); @@ -817,6 +820,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) From 83540cf0c7663ed99c808792a9a6c5fc851677e7 Mon Sep 17 00:00:00 2001 From: Jimi Huotari Date: Wed, 5 Mar 2025 18:43:01 +0200 Subject: [PATCH 14/14] qt6: move 'QAction' to 'QtGui' --- .../backends/web/qtwebengine/QtWebEngineWebWidget.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp index 1fddce7922..92dc7bb513 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp @@ -47,6 +47,9 @@ #include #include #include +#if QT_VERSION >= 0x060000 +#include +#endif #include #include #include @@ -58,7 +61,9 @@ #include #include #include +#if QT_VERSION < 0x060000 #include +#endif #include namespace Otter