diff --git a/src/mainview/components/MessageWebView.qml b/src/mainview/components/MessageWebView.qml index 1cb9242e90c3e75ce66f7b3a8f5122a4c23d7a43..98bdd48df7ba2fe1e30625aed61676eef4a24c4c 100644 --- a/src/mainview/components/MessageWebView.qml +++ b/src/mainview/components/MessageWebView.qml @@ -232,6 +232,13 @@ Rectangle { } } + onNavigationRequested: { + if(request.navigationType === WebEngineView.LinkClickedNavigation) { + MessagesAdapter.openUrl(request.url) + request.action = WebEngineView.IgnoreRequest + } + } + onLoadingChanged: { if (loadRequest.status == WebEngineView.LoadSucceededStatus) { messageWebView.runJavaScript(ClientWrapper.utilsAdaptor.getStyleSheet( diff --git a/src/messagesadapter.cpp b/src/messagesadapter.cpp index 1220aeb45838850793d65ca4ac392b88a62ae9c4..314d7b93311811847e5ffe749482aaf7454d94ea 100644 --- a/src/messagesadapter.cpp +++ b/src/messagesadapter.cpp @@ -332,6 +332,14 @@ MessagesAdapter::openFile(const QString &arg) } } +void +MessagesAdapter::openUrl(const QString &url) +{ + if (!QDesktopServices::openUrl(url)) { + qDebug() << "Couldn't open url: " << url; + } +} + void MessagesAdapter::acceptFile(const QString &arg) { diff --git a/src/messagesadapter.h b/src/messagesadapter.h index 7a0c2f9e4a9789225990f2b1c26c8f0d0bfe9d5e..352cc3eec0cc24704b35dc35e66286553baad0b9 100644 --- a/src/messagesadapter.h +++ b/src/messagesadapter.h @@ -49,6 +49,7 @@ public: Q_INVOKABLE void sendFile(const QString &message); Q_INVOKABLE void retryInteraction(const QString &arg); Q_INVOKABLE void deleteInteraction(const QString &arg); + Q_INVOKABLE void openUrl(const QString &url); Q_INVOKABLE void openFile(const QString &arg); Q_INVOKABLE void acceptFile(const QString &arg); Q_INVOKABLE void refuseFile(const QString &arg);