From a697d20f822739546baed5b4853da008b86462bd Mon Sep 17 00:00:00 2001 From: J-P Nurmi Date: Wed, 22 Jan 2014 14:21:46 +0200 Subject: Expose Text::linkAt(x, y) [ChangeLog][QtQuick] Added Text::linkAt(x,y) method. Task-number: QTBUG-18946 Change-Id: I3b4071c6117ac0ee636f2fdbd2c392eb05b02dd7 Reviewed-by: Martin Jones Reviewed-by: Jens Bache-Wiig Reviewed-by: Alan Alpert --- src/quick/items/qquickitemsmodule.cpp | 2 ++ src/quick/items/qquicktext.cpp | 19 +++++++++++++++++-- src/quick/items/qquicktext_p.h | 2 ++ tests/auto/quick/qquicktext/tst_qquicktext.cpp | 3 +++ 4 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/quick/items/qquickitemsmodule.cpp b/src/quick/items/qquickitemsmodule.cpp index 96746223ce..4652bdf98e 100644 --- a/src/quick/items/qquickitemsmodule.cpp +++ b/src/quick/items/qquickitemsmodule.cpp @@ -269,6 +269,8 @@ static void qt_quickitems_defineModule(const char *uri, int major, int minor) qmlRegisterType(uri, 2, 2, "Text"); qmlRegisterType(uri, 2, 2, "TextEdit"); + + qmlRegisterType(uri, 2, 3, "Text"); } static void initResources() diff --git a/src/quick/items/qquicktext.cpp b/src/quick/items/qquicktext.cpp index 03454e2bf9..ae14a43de0 100644 --- a/src/quick/items/qquicktext.cpp +++ b/src/quick/items/qquicktext.cpp @@ -2569,7 +2569,7 @@ bool QQuickTextPrivate::isLinkHoveredConnected() text. The link must be in rich text or HTML format and the \a link string provides access to the particular link. - \sa hoveredLink + \sa hoveredLink, linkAt() */ /*! @@ -2580,7 +2580,7 @@ bool QQuickTextPrivate::isLinkHoveredConnected() embedded in the text. The link must be in rich text or HTML format and the \a hoveredLink string provides access to the particular link. - \sa onLinkHovered + \sa onLinkHovered, linkAt() */ QString QQuickText::hoveredLink() const @@ -2680,4 +2680,19 @@ void QQuickText::doLayout() d->updateSize(); } +/*! + \qmlmethod QtQuick::Text::linkAt(real x, real y) + \since 5.3 + + Returns the link string at point \a x, \a y in content coordinates, + or an empty string if no link exists at that point. + + \sa hoveredLink +*/ +QString QQuickText::linkAt(qreal x, qreal y) const +{ + Q_D(const QQuickText); + return d->anchorAt(QPointF(x, y)); +} + QT_END_NAMESPACE diff --git a/src/quick/items/qquicktext_p.h b/src/quick/items/qquicktext_p.h index d55dc7e287..44bd5aa9b0 100644 --- a/src/quick/items/qquicktext_p.h +++ b/src/quick/items/qquicktext_p.h @@ -210,6 +210,8 @@ public: QString hoveredLink() const; + Q_REVISION(3) Q_INVOKABLE QString linkAt(qreal x, qreal y) const; + Q_SIGNALS: void textChanged(const QString &text); void linkActivated(const QString &link); diff --git a/tests/auto/quick/qquicktext/tst_qquicktext.cpp b/tests/auto/quick/qquicktext/tst_qquicktext.cpp index e6a74bb062..59806a8aec 100644 --- a/tests/auto/quick/qquicktext/tst_qquicktext.cpp +++ b/tests/auto/quick/qquicktext/tst_qquicktext.cpp @@ -1943,6 +1943,7 @@ void tst_qquicktext::linkInteraction() QCOMPARE(test.hoveredLink, hoverEnterLink); QCOMPARE(textObject->hoveredLink(), hoverEnterLink); + QCOMPARE(textObject->linkAt(mousePosition.x(), mousePosition.y()), hoverEnterLink); for (int i = 1; i < mousePositions.count(); ++i) { mousePosition = mousePositions.at(i); @@ -1956,6 +1957,7 @@ void tst_qquicktext::linkInteraction() QCOMPARE(test.hoveredLink, hoverMoveLink); QCOMPARE(textObject->hoveredLink(), hoverMoveLink); + QCOMPARE(textObject->linkAt(mousePosition.x(), mousePosition.y()), hoverMoveLink); { QHoverEvent he(QEvent::HoverLeave, mousePosition, QPointF()); @@ -1968,6 +1970,7 @@ void tst_qquicktext::linkInteraction() QCOMPARE(test.clickedLink, clickedLink); QCOMPARE(test.hoveredLink, QString()); QCOMPARE(textObject->hoveredLink(), QString()); + QCOMPARE(textObject->linkAt(-1, -1), QString()); delete textObject; } -- cgit v1.2.3