diff --git a/kiwix-desktop.pro b/kiwix-desktop.pro index 7b5182e..5e0f046 100644 --- a/kiwix-desktop.pro +++ b/kiwix-desktop.pro @@ -41,7 +41,8 @@ SOURCES += \ src/tabwidget.cpp \ src/webview.cpp \ src/searchbar.cpp \ - src/mainmenu.cpp + src/mainmenu.cpp \ + src/webpage.cpp HEADERS += \ src/mainwindow.h \ @@ -55,7 +56,8 @@ HEADERS += \ src/tabwidget.h \ src/webview.h \ src/searchbar.h \ - src/mainmenu.h + src/mainmenu.h \ + src/webpage.h FORMS += \ ui/mainwindow.ui diff --git a/src/webpage.cpp b/src/webpage.cpp new file mode 100644 index 0000000..1a98df1 --- /dev/null +++ b/src/webpage.cpp @@ -0,0 +1,19 @@ +#include "webpage.h" + +#include + +WebPage::WebPage(QObject *parent) : + QWebEnginePage(parent) +{ + +} + +bool WebPage::acceptNavigationRequest(const QUrl &url, QWebEnginePage::NavigationType type, bool isMainFrame) +{ + if (url.scheme() != "zim") { + QDesktopServices::openUrl(url); + return false; + } + return true; + +} diff --git a/src/webpage.h b/src/webpage.h new file mode 100644 index 0000000..e82f14a --- /dev/null +++ b/src/webpage.h @@ -0,0 +1,20 @@ +#ifndef WEBPAGE_H +#define WEBPAGE_H + +#include + +class WebPage : public QWebEnginePage +{ + Q_OBJECT +public: + explicit WebPage(QObject *parent = nullptr); + +protected: + bool acceptNavigationRequest(const QUrl &url, NavigationType type, bool isMainFrame); + +signals: + +public slots: +}; + +#endif // WEBPAGE_H diff --git a/src/webview.cpp b/src/webview.cpp index be9b5b6..658da89 100644 --- a/src/webview.cpp +++ b/src/webview.cpp @@ -4,10 +4,12 @@ #include #include #include "kiwixapp.h" +#include "webpage.h" WebView::WebView(QWidget *parent) : QWebEngineView(parent) { + setPage(new WebPage(this)); auto profile = page()->profile(); auto app = KiwixApp::instance(); profile->installUrlSchemeHandler("zim", app->getSchemeHandler());