diff options
Diffstat (limited to 'src/quick/items/qquicktext.cpp')
-rw-r--r-- | src/quick/items/qquicktext.cpp | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/src/quick/items/qquicktext.cpp b/src/quick/items/qquicktext.cpp index 6335c83b2b..d62bf8efa1 100644 --- a/src/quick/items/qquicktext.cpp +++ b/src/quick/items/qquicktext.cpp @@ -107,7 +107,6 @@ void QQuickTextPrivate::init() Q_Q(QQuickText); q->setAcceptedMouseButtons(Qt::LeftButton); q->setFlag(QQuickItem::ItemHasContents); - q->setAcceptHoverEvents(true); } QQuickTextDocumentWithImageResources::QQuickTextDocumentWithImageResources(QQuickItem *parent) @@ -1523,6 +1522,7 @@ void QQuickText::setText(const QString &n) qDeleteAll(d->imgTags); d->imgTags.clear(); d->updateLayout(); + setAcceptHoverEvents(d->richText || d->styledText); emit textChanged(d->text); } @@ -2002,6 +2002,7 @@ void QQuickText::setTextFormat(TextFormat format) d->determineHorizontalAlignment(); } d->updateLayout(); + setAcceptHoverEvents(d->richText || d->styledText); emit textFormatChanged(d->format); } @@ -2634,34 +2635,34 @@ void QQuickTextPrivate::processHoverEvent(QHoverEvent *event) { Q_Q(QQuickText); QString link; - if (event->type() != QEvent::HoverLeave) - link = anchorAt(event->posF()); + if (isLinkHoveredConnected()) { + if (event->type() != QEvent::HoverLeave) + link = anchorAt(event->posF()); - if ((!extra.isAllocated() && !link.isEmpty()) || (extra.isAllocated() && extra->hoveredLink != link)) { - extra.value().hoveredLink = link; - emit q->linkHovered(extra->hoveredLink); + if ((!extra.isAllocated() && !link.isEmpty()) || (extra.isAllocated() && extra->hoveredLink != link)) { + extra.value().hoveredLink = link; + emit q->linkHovered(extra->hoveredLink); + } } + event->setAccepted(!link.isEmpty()); } void QQuickText::hoverEnterEvent(QHoverEvent *event) { Q_D(QQuickText); - if (d->isLinkHoveredConnected()) - d->processHoverEvent(event); + d->processHoverEvent(event); } void QQuickText::hoverMoveEvent(QHoverEvent *event) { Q_D(QQuickText); - if (d->isLinkHoveredConnected()) - d->processHoverEvent(event); + d->processHoverEvent(event); } void QQuickText::hoverLeaveEvent(QHoverEvent *event) { Q_D(QQuickText); - if (d->isLinkHoveredConnected()) - d->processHoverEvent(event); + d->processHoverEvent(event); } QT_END_NAMESPACE |