aboutsummaryrefslogtreecommitdiffstats
path: root/src/quick
diff options
context:
space:
mode:
authorJ-P Nurmi <jpnurmi@digia.com>2013-10-29 17:25:00 +0100
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-11-05 22:23:25 +0100
commit22b83ec28a7dfebe9d47ff5c98fddfdb492e4304 (patch)
tree5d6f1bf47d5dadc9a930837f045e1480f8614b28 /src/quick
parentba674099d6d51e2cca19909e31a13a9d8e4490f8 (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.cpp25
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