diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/CMakeLists.txt | 1 | ||||
-rw-r--r-- | src/webengine/webpage.cpp | 29 | ||||
-rw-r--r-- | src/webengine/webpage.h | 1 |
3 files changed, 31 insertions, 0 deletions
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 44823df..c326c4b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -63,6 +63,7 @@ target_link_libraries(poi target_compile_definitions(poi PRIVATE QTBUG_65223_WORKAROUND + PRIVATE QTBUG_68224_WORKAROUND ) install(TARGETS poi RUNTIME DESTINATION bin CONFIGURATIONS Release) diff --git a/src/webengine/webpage.cpp b/src/webengine/webpage.cpp index fe011b4..6fba97c 100644 --- a/src/webengine/webpage.cpp +++ b/src/webengine/webpage.cpp @@ -10,6 +10,8 @@ #include <QMessageBox> #include <QWebEngineFullScreenRequest> +#include <QLayout> + QString feature_toString(QWebEnginePage::Feature feature) { switch(feature) { @@ -70,6 +72,33 @@ bool WebPage::certificateError(const QWebEngineCertificateError &certificateErro return resp == QMessageBox::Ignore; } +bool WebPage::acceptNavigationRequest(const QUrl &url, NavigationType type, bool isMainFrame) +{ + + /* Workaround for https://bugreports.qt.io/browse/QTBUG-68224 + * Only affects 5.11.0; should be fixed in 5.11.1 + */ +#ifdef QTBUG_68224_WORKAROUND + auto *layout = this->view()->layout(); + auto count = layout->count(); + + if(count > 1) { + for (int i = 0; i < count; ++i) { + auto *item = layout->itemAt(i); + if(item == nullptr) + continue; + auto *widget = item->widget(); + if(widget != this->view()->focusProxy()) { + //qDebug("Removing widget"); + layout->removeWidget(widget); + } + } + } +#endif + + return true; +} + void WebPage::featurePermissionDialog(const QUrl &securityOrigin, QWebEnginePage::Feature feature) { QMessageBox messageBox; diff --git a/src/webengine/webpage.h b/src/webengine/webpage.h index 92c5925..2232d26 100644 --- a/src/webengine/webpage.h +++ b/src/webengine/webpage.h @@ -19,6 +19,7 @@ public: protected: bool certificateError(const QWebEngineCertificateError &certificateError) override; + bool acceptNavigationRequest(const QUrl &url, NavigationType type, bool isMainFrame) override; private slots: void featurePermissionDialog(const QUrl &securityOrigin, QWebEnginePage::Feature feature); |