diff --git a/CMakeLists.txt b/CMakeLists.txt --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -38,7 +38,7 @@ include(KDevPlatformMacros) set(QT_MIN_VERSION "5.4.0") -find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED Core DBus Widgets WebKitWidgets Concurrent Test) +find_package(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED Core DBus Widgets WebEngineWidgets Concurrent Test) find_package(Qt5QuickWidgets ${QT_MIN_VERSION}) set_package_properties(Qt5QuickWidgets PROPERTIES diff --git a/documentation/CMakeLists.txt b/documentation/CMakeLists.txt --- a/documentation/CMakeLists.txt +++ b/documentation/CMakeLists.txt @@ -15,7 +15,7 @@ kdevplatform_add_library(KDevPlatformDocumentation SOURCES ${KDevPlatformDocumentation_LIB_SRCS}) target_link_libraries(KDevPlatformDocumentation - LINK_PUBLIC KDev::Interfaces Qt5::WebKitWidgets) + LINK_PUBLIC KDev::Interfaces Qt5::WebEngineWidgets) install(FILES documentationfindwidget.h diff --git a/documentation/standarddocumentationview.h b/documentation/standarddocumentationview.h --- a/documentation/standarddocumentationview.h +++ b/documentation/standarddocumentationview.h @@ -21,7 +21,7 @@ #ifndef KDEVPLATFORM_STANDARDDOCUMENTATIONVIEW_H #define KDEVPLATFORM_STANDARDDOCUMENTATIONVIEW_H -#include +#include #include "documentationexport.h" #include "documentationfindwidget.h" #include @@ -32,7 +32,7 @@ /** * The standard documentation view, based on QWebView. */ -class KDEVPLATFORMDOCUMENTATION_EXPORT StandardDocumentationView : public QWebView +class KDEVPLATFORMDOCUMENTATION_EXPORT StandardDocumentationView : public QWebEngineView { Q_OBJECT public: diff --git a/documentation/standarddocumentationview.cpp b/documentation/standarddocumentationview.cpp --- a/documentation/standarddocumentationview.cpp +++ b/documentation/standarddocumentationview.cpp @@ -23,70 +23,24 @@ #include "debug.h" #include -#include using namespace KDevelop; StandardDocumentationView::StandardDocumentationView(DocumentationFindWidget* findWidget, QWidget* parent) - : QWebView(parent) + : QWebEngineView(parent) { findWidget->setEnabled(true); connect(findWidget, &DocumentationFindWidget::newSearch, this, &StandardDocumentationView::search); - - QFont sansSerifFont = QFontDatabase::systemFont(QFontDatabase::GeneralFont); - QFont monospaceFont = QFontDatabase::systemFont(QFontDatabase::FixedFont); - QFont minimalFont = QFontDatabase::systemFont(QFontDatabase::SmallestReadableFont); - - QWebSettings* s = settings(); - - s->setFontFamily(QWebSettings::StandardFont, sansSerifFont.family()); - s->setFontFamily(QWebSettings::SerifFont, "Serif"); - s->setFontFamily(QWebSettings::SansSerifFont, sansSerifFont.family()); - s->setFontFamily(QWebSettings::FixedFont, monospaceFont.family()); - - s->setFontSize(QWebSettings::DefaultFontSize, QFontInfo(sansSerifFont).pixelSize()); - s->setFontSize(QWebSettings::DefaultFixedFontSize, QFontInfo(monospaceFont).pixelSize()); - s->setFontSize(QWebSettings::MinimumFontSize, QFontInfo(minimalFont).pixelSize()); - - // Fixes for correct positioning. The problem looks like the following: - // - // 1) Some page is loaded and loadFinished() signal is emitted, - // after this QWebView set right position inside page. - // - // 2) After loadFinished() emitting, page JS code finishes it's work and changes - // font settings (size). This leads to page contents "moving" inside view widget - // and as a result we have wrong position. - // - // Such behavior occurs for example with QtHelp pages. - // - // To fix the problem, first, we disable view painter updates during load to avoid content - // "flickering" and also to hide font size "jumping". Secondly, we reset position inside page - // after loading with using standard QWebFrame method scrollToAnchor(). - - connect(this, &QWebView::loadStarted, this, [this]() { - setUpdatesEnabled(false); - }); - - connect(this, &QWebView::loadFinished, this, [this](bool) { - if (url().isValid()) { - page()->mainFrame()->scrollToAnchor(url().fragment()); - } - setUpdatesEnabled(true); - }); - } void StandardDocumentationView::search ( const QString& text, DocumentationFindWidget::FindOptions options ) { - //Highlighting has been commented because it doesn't let me jump around all occurrences -// page()->findText(QString(), QWebPage::HighlightAllOccurrences); - - QWebPage::FindFlags ff=QWebPage::FindWrapsAroundDocument /*| QWebPage::HighlightAllOccurrences*/; + QWebEnginePage::FindFlags ff = 0; if(options & DocumentationFindWidget::Previous) - ff |= QWebPage::FindBackward; + ff |= QWebEnginePage::FindBackward; if(options & DocumentationFindWidget::MatchCase) - ff |= QWebPage::FindCaseSensitively; + ff |= QWebEnginePage::FindCaseSensitively; page()->findText(text, ff); } @@ -104,7 +58,7 @@ void StandardDocumentationView::update() { if(m_doc) - setHtml(m_doc->description()); + page()->setHtml(m_doc->description()); else qCDebug(DOCUMENTATION) << "calling StandardDocumentationView::update() on an uninitialized view"; }