diff options
Diffstat (limited to 'src/quick/items/qquicktextcontrol.cpp')
-rw-r--r-- | src/quick/items/qquicktextcontrol.cpp | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/quick/items/qquicktextcontrol.cpp b/src/quick/items/qquicktextcontrol.cpp index e22c84879b..fce5e02b4d 100644 --- a/src/quick/items/qquicktextcontrol.cpp +++ b/src/quick/items/qquicktextcontrol.cpp @@ -720,6 +720,12 @@ void QQuickTextControl::processEvent(QEvent *e, const QMatrix &matrix) QMouseEvent *ev = static_cast<QMouseEvent *>(e); d->mouseDoubleClickEvent(ev, matrix.map(ev->localPos())); break; } + case QEvent::HoverEnter: + case QEvent::HoverMove: + case QEvent::HoverLeave: { + QHoverEvent *ev = static_cast<QHoverEvent *>(e); + d->hoverEvent(ev, matrix.map(ev->posF())); + break; } #ifndef QT_NO_IM case QEvent::InputMethod: d->inputMethodEvent(static_cast<QInputMethodEvent *>(e)); @@ -1403,6 +1409,20 @@ void QQuickTextControlPrivate::focusEvent(QFocusEvent *e) } } +void QQuickTextControlPrivate::hoverEvent(QHoverEvent *e, const QPointF &pos) +{ + Q_Q(QQuickTextControl); + + QString link; + if (e->type() != QEvent::HoverLeave) + link = q->anchorAt(pos); + + if (hoveredLink != link) { + hoveredLink = link; + emit q->linkHovered(link); + } +} + bool QQuickTextControl::hasImState() const { Q_D(const QQuickTextControl); @@ -1438,6 +1458,12 @@ QRectF QQuickTextControl::cursorRect() const return cursorRect(d->cursor); } +QString QQuickTextControl::hoveredLink() const +{ + Q_D(const QQuickTextControl); + return d->hoveredLink; +} + QString QQuickTextControl::anchorAt(const QPointF &pos) const { Q_D(const QQuickTextControl); |