show hover link

This commit is contained in:
Le Tan 2020-12-17 21:50:07 +08:00
parent 5d9103b933
commit 66554819a6
4 changed files with 35 additions and 17 deletions

View File

@ -7,7 +7,6 @@
#include <QMimeData>
#include <QScopedPointer>
#include "../webpage.h"
#include "markdownvieweradapter.h"
#include "previewhelper.h"
#include <utils/clipboardutils.h>
@ -28,25 +27,15 @@ MarkdownViewer::MarkdownViewer(MarkdownViewerAdapter *p_adapter,
const QColor &p_background,
qreal p_zoomFactor,
QWidget *p_parent)
: WebViewer(p_parent),
: WebViewer(p_background, p_zoomFactor, p_parent),
m_adapter(p_adapter)
{
m_adapter->setParent(this);
auto page = new WebPage(this);
setPage(page);
// Avoid white flash before loading content.
// Setting Qt::transparent will force GrayScale antialias rendering.
page->setBackgroundColor(p_background);
if (!Utils::fuzzyEqual(p_zoomFactor, 1.0)) {
setZoomFactor(p_zoomFactor);
}
auto channel = new QWebChannel(this);
channel->registerObject(QStringLiteral("vxAdapter"), m_adapter);
page->setWebChannel(channel);
page()->setWebChannel(channel);
connect(QApplication::clipboard(), &QClipboard::changed,
this, &MarkdownViewer::handleClipboardChanged);

View File

@ -414,6 +414,11 @@ void MarkdownViewWindow::setupViewer()
showZoomFactor(p_factor);
});
connect(m_viewer, &WebViewer::linkHovered,
this, [this](const QString &p_url) {
showMessage(p_url);
});
// Connect outline pipeline.
connect(adapter, &MarkdownViewerAdapter::headingsChanged,
this, [this]() {

View File

@ -1,14 +1,33 @@
#include "webviewer.h"
#include "webpage.h"
#include <utils/utils.h>
using namespace vnotex;
WebViewer::WebViewer(QWidget *p_parent)
WebViewer::WebViewer(const QColor &p_background,
qreal p_zoomFactor,
QWidget *p_parent)
: QWebEngineView(p_parent)
{
setAcceptDrops(false);
auto viewPage = new WebPage(this);
setPage(viewPage);
connect(viewPage, &QWebEnginePage::linkHovered,
this, &WebViewer::linkHovered);
// Avoid white flash before loading content.
// Setting Qt::transparent will force GrayScale antialias rendering.
viewPage->setBackgroundColor(p_background);
if (!Utils::fuzzyEqual(p_zoomFactor, 1.0)) {
setZoomFactor(p_zoomFactor);
}
}
WebViewer::~WebViewer()
{
}

View File

@ -9,9 +9,14 @@ namespace vnotex
{
Q_OBJECT
public:
explicit WebViewer(QWidget *p_parent = nullptr);
explicit WebViewer(const QColor &p_background,
qreal p_zoomFactor,
QWidget *p_parent = nullptr);
virtual ~WebViewer();
signals:
void linkHovered(const QString &p_url);
};
}