aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/CMakeLists.txt1
-rw-r--r--src/webengine/webpage.cpp29
-rw-r--r--src/webengine/webpage.h1
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);