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 <QMimeData>
#include <QScopedPointer> #include <QScopedPointer>
#include "../webpage.h"
#include "markdownvieweradapter.h" #include "markdownvieweradapter.h"
#include "previewhelper.h" #include "previewhelper.h"
#include <utils/clipboardutils.h> #include <utils/clipboardutils.h>
@ -28,25 +27,15 @@ MarkdownViewer::MarkdownViewer(MarkdownViewerAdapter *p_adapter,
const QColor &p_background, const QColor &p_background,
qreal p_zoomFactor, qreal p_zoomFactor,
QWidget *p_parent) QWidget *p_parent)
: WebViewer(p_parent), : WebViewer(p_background, p_zoomFactor, p_parent),
m_adapter(p_adapter) m_adapter(p_adapter)
{ {
m_adapter->setParent(this); 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); auto channel = new QWebChannel(this);
channel->registerObject(QStringLiteral("vxAdapter"), m_adapter); channel->registerObject(QStringLiteral("vxAdapter"), m_adapter);
page->setWebChannel(channel);
page()->setWebChannel(channel);
connect(QApplication::clipboard(), &QClipboard::changed, connect(QApplication::clipboard(), &QClipboard::changed,
this, &MarkdownViewer::handleClipboardChanged); this, &MarkdownViewer::handleClipboardChanged);

View File

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

View File

@ -1,14 +1,33 @@
#include "webviewer.h" #include "webviewer.h"
#include "webpage.h"
#include <utils/utils.h>
using namespace vnotex; using namespace vnotex;
WebViewer::WebViewer(QWidget *p_parent) WebViewer::WebViewer(const QColor &p_background,
qreal p_zoomFactor,
QWidget *p_parent)
: QWebEngineView(p_parent) : QWebEngineView(p_parent)
{ {
setAcceptDrops(false); 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() WebViewer::~WebViewer()
{ {
} }

View File

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