mirror of
https://github.com/xiaoyifang/goldendict-ng.git
synced 2024-11-24 00:14:06 +00:00
single click to open external link in external browser
This commit is contained in:
parent
09063ecc5a
commit
a1c0cfa042
|
@ -340,6 +340,7 @@ ArticleView::ArticleView( QWidget * parent, ArticleNetworkAccessManager & nm,
|
|||
QWebEngineSettings * settings = ui.definition->page()->settings();
|
||||
settings->defaultSettings()->setAttribute( QWebEngineSettings::WebAttribute::LocalContentCanAccessRemoteUrls, true );
|
||||
settings->defaultSettings()->setAttribute( QWebEngineSettings::WebAttribute::LocalContentCanAccessFileUrls, true );
|
||||
settings->defaultSettings()->setAttribute( QWebEngineSettings::WebAttribute::ErrorPageEnabled, false);
|
||||
// Load the default blank page instantly, so there would be no flicker.
|
||||
|
||||
QString contentType;
|
||||
|
@ -1123,7 +1124,7 @@ void ArticleView::openLink( QUrl const & url, QUrl const & ref,
|
|||
QString const & scrollTo,
|
||||
Contexts const & contexts_ )
|
||||
{
|
||||
qDebug() << "clicked url:" << url;
|
||||
qDebug() << "open link url:" << url;
|
||||
|
||||
Contexts contexts( contexts_ );
|
||||
|
||||
|
|
|
@ -1298,6 +1298,7 @@ void MainWindow::applyWebSettings()
|
|||
defaultSettings->setAttribute(QWebEngineSettings::PlaybackRequiresUserGesture, false);
|
||||
defaultSettings->setAttribute( QWebEngineSettings::WebAttribute::LocalContentCanAccessRemoteUrls, true );
|
||||
defaultSettings->setAttribute( QWebEngineSettings::WebAttribute::LocalContentCanAccessFileUrls, true );
|
||||
defaultSettings->setAttribute( QWebEngineSettings::WebAttribute::ErrorPageEnabled, false);
|
||||
}
|
||||
|
||||
void MainWindow::setupNetworkCache( int maxSize )
|
||||
|
|
7
utils.hh
7
utils.hh
|
@ -26,6 +26,13 @@ inline QString rstrip(const QString& str) {
|
|||
return "";
|
||||
}
|
||||
|
||||
inline bool isExternalLink( QUrl const & url )
|
||||
{
|
||||
return url.scheme() == "http" || url.scheme() == "https" ||
|
||||
url.scheme() == "ftp" || url.scheme() == "mailto" ||
|
||||
url.scheme() == "file";
|
||||
}
|
||||
|
||||
inline QString escape( QString const & plain )
|
||||
{
|
||||
return plain.toHtmlEscaped();
|
||||
|
|
|
@ -1,13 +1,19 @@
|
|||
#include "weburlrequestinterceptor.h"
|
||||
#include <QDebug>
|
||||
#include "utils.hh"
|
||||
|
||||
WebUrlRequestInterceptor::WebUrlRequestInterceptor(QObject *p)
|
||||
:QWebEngineUrlRequestInterceptor(p)
|
||||
{
|
||||
|
||||
}
|
||||
void WebUrlRequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo &info) {
|
||||
if(QWebEngineUrlRequestInfo::NavigationTypeLink==info.navigationType ()&&info.resourceType ()==QWebEngineUrlRequestInfo::ResourceTypeMainFrame)
|
||||
emit linkClicked(info.requestUrl ());
|
||||
|
||||
void WebUrlRequestInterceptor::interceptRequest(
|
||||
QWebEngineUrlRequestInfo &info) {
|
||||
if (QWebEngineUrlRequestInfo::NavigationTypeLink == info.navigationType() &&
|
||||
info.resourceType() == QWebEngineUrlRequestInfo::ResourceTypeMainFrame) {
|
||||
emit linkClicked(info.requestUrl());
|
||||
if (Utils::isExternalLink(info.requestUrl())) {
|
||||
info.block(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue