diff options
author | J-P Nurmi <jpnurmi@digia.com> | 2013-10-29 17:25:00 +0100 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-11-05 22:23:25 +0100 |
commit | 22b83ec28a7dfebe9d47ff5c98fddfdb492e4304 (patch) | |
tree | 5d6f1bf47d5dadc9a930837f045e1480f8614b28 /src/quick | |
parent | ba674099d6d51e2cca19909e31a13a9d8e4490f8 (diff) |
Fix QQuickText hover event handling
Catch hover events only when the item contains either rich or styled
text, and make sure to ignore hover events as appropriate to propagate
them further.
Task-number: QTBUG-33842
Change-Id: Idef5be7c502711393ab532c4ace31663b0e0a872
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
Diffstat (limited to 'src/quick')
-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 |