diff --git a/src/mainview/components/MessageWebView.qml b/src/mainview/components/MessageWebView.qml index 1cb9242e..98bdd48d 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 1220aeb4..314d7b93 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 7a0c2f9e..352cc3ee 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);