Expose Text::linkAt(x, y)
authorJ-P Nurmi <jpnurmi@digia.com>
Wed, 22 Jan 2014 12:21:46 +0000 (14:21 +0200)
committerThe Qt Project <gerrit-noreply@qt-project.org>
Wed, 29 Jan 2014 00:20:38 +0000 (01:20 +0100)
[ChangeLog][QtQuick] Added Text::linkAt(x,y) method.

Task-number: QTBUG-18946
Change-Id: I3b4071c6117ac0ee636f2fdbd2c392eb05b02dd7
Reviewed-by: Martin Jones <martin.jones@jollamobile.com>
Reviewed-by: Jens Bache-Wiig <jens.bache-wiig@digia.com>
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
src/quick/items/qquickitemsmodule.cpp
src/quick/items/qquicktext.cpp
src/quick/items/qquicktext_p.h
tests/auto/quick/qquicktext/tst_qquicktext.cpp

index 9674622..4652bdf 100644 (file)
@@ -269,6 +269,8 @@ static void qt_quickitems_defineModule(const char *uri, int major, int minor)
 
     qmlRegisterType<QQuickText, 2>(uri, 2, 2, "Text");
     qmlRegisterType<QQuickTextEdit, 2>(uri, 2, 2, "TextEdit");
+
+    qmlRegisterType<QQuickText, 3>(uri, 2, 3, "Text");
 }
 
 static void initResources()
index 03454e2..ae14a43 100644 (file)
@@ -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
index d55dc7e..44bd5aa 100644 (file)
@@ -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);
index e6a74bb..59806a8 100644 (file)
@@ -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;
 }