diff options
author | J-P Nurmi <jpnurmi@digia.com> | 2013-04-22 18:14:55 +0200 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2013-06-07 21:47:57 +0200 |
commit | a2e8e835fc187a3a804c6d4c0b46e9039c137dc6 (patch) | |
tree | 264944c62c807541136d231c26db83c8182b8d3f /src/quick/items/qquicktextedit.cpp | |
parent | c3bd7f90b4ac10485740bb8bec44cfbb24237fea (diff) |
Add QQuickTextEdit::hoveredLink
Change-Id: I9d75a97c86e047742514f942cdb91c70f1d7a9a2
Reviewed-by: Mitch Curtis <mitch.curtis@digia.com>
Reviewed-by: Alan Alpert <aalpert@blackberry.com>
Diffstat (limited to 'src/quick/items/qquicktextedit.cpp')
-rw-r--r-- | src/quick/items/qquicktextedit.cpp | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/src/quick/items/qquicktextedit.cpp b/src/quick/items/qquicktextedit.cpp index 327b0867e6..6b851903fc 100644 --- a/src/quick/items/qquicktextedit.cpp +++ b/src/quick/items/qquicktextedit.cpp @@ -1953,6 +1953,8 @@ void QQuickTextEditPrivate::init() #endif q->setFlag(QQuickItem::ItemHasContents); + q->setAcceptHoverEvents(true); + document = new QQuickTextDocumentWithImageResources(q); control = new QQuickTextControl(document, q); @@ -1967,6 +1969,7 @@ void QQuickTextEditPrivate::init() qmlobject_connect(control, QQuickTextControl, SIGNAL(cursorPositionChanged()), q, QQuickTextEdit, SIGNAL(cursorPositionChanged())); qmlobject_connect(control, QQuickTextControl, SIGNAL(cursorRectangleChanged()), q, QQuickTextEdit, SLOT(moveCursorDelegate())); qmlobject_connect(control, QQuickTextControl, SIGNAL(linkActivated(QString)), q, QQuickTextEdit, SIGNAL(linkActivated(QString))); + qmlobject_connect(control, QQuickTextControl, SIGNAL(linkHovered(QString)), q, QQuickTextEdit, SIGNAL(linkHovered(QString))); qmlobject_connect(control, QQuickTextControl, SIGNAL(textChanged()), q, QQuickTextEdit, SLOT(q_textChanged())); #ifndef QT_NO_CLIPBOARD qmlobject_connect(QGuiApplication::clipboard(), QClipboard, SIGNAL(dataChanged()), q, QQuickTextEdit, SLOT(q_canPasteChanged())); @@ -2468,4 +2471,66 @@ QQuickTextDocument *QQuickTextEdit::textDocument() return d->quickDocument; } +bool QQuickTextEditPrivate::isLinkHoveredConnected() +{ + Q_Q(QQuickTextEdit); + IS_SIGNAL_CONNECTED(q, QQuickTextEdit, linkHovered, (const QString &)); +} + +/*! + \qmlsignal QtQuick2::TextEdit::onLinkHovered(string link) + \since QtQuick 2.2 + + This handler is called when the user hovers a link embedded in the text. + The link must be in rich text or HTML format and the + \a link string provides access to the particular link. + + \sa hoveredLink +*/ + +/*! + \qmlproperty string QtQuick2::TextEdit::hoveredLink + \since QtQuick 2.2 + + This property contains the link string when user hovers a link + embedded in the text. The link must be in rich text or HTML format + and the link string provides access to the particular link. + + \sa onLinkHovered +*/ + +QString QQuickTextEdit::hoveredLink() const +{ + Q_D(const QQuickTextEdit); + if (const_cast<QQuickTextEditPrivate *>(d)->isLinkHoveredConnected()) { + return d->control->hoveredLink(); +#ifndef QT_NO_CURSOR + } else { + QPointF pos = QCursor::pos(window()->screen()) - window()->position() - mapToScene(position()); + return d->control->anchorAt(pos); +#endif // QT_NO_CURSOR + } +} + +void QQuickTextEdit::hoverEnterEvent(QHoverEvent *event) +{ + Q_D(QQuickTextEdit); + if (d->isLinkHoveredConnected()) + d->control->processEvent(event, QPointF(-d->xoff, -d->yoff)); +} + +void QQuickTextEdit::hoverMoveEvent(QHoverEvent *event) +{ + Q_D(QQuickTextEdit); + if (d->isLinkHoveredConnected()) + d->control->processEvent(event, QPointF(-d->xoff, -d->yoff)); +} + +void QQuickTextEdit::hoverLeaveEvent(QHoverEvent *event) +{ + Q_D(QQuickTextEdit); + if (d->isLinkHoveredConnected()) + d->control->processEvent(event, QPointF(-d->xoff, -d->yoff)); +} + QT_END_NAMESPACE |