diff options
author | David Schulz <david.schulz@qt.io> | 2022-04-20 15:10:43 +0200 |
---|---|---|
committer | David Schulz <david.schulz@qt.io> | 2022-04-21 08:01:23 +0000 |
commit | 2529b62315edc7aafe8407ea2de898923d085f9e (patch) | |
tree | 36fb480385279e901c2b4534f638c20658a91ffc | |
parent | d1686e18679fd229d2bfa45828a79004cad1e052 (diff) | |
download | qt-creator-2529b62315edc7aafe8407ea2de898923d085f9e.tar.gz |
Editor: improve open link via mouse press
It improve in the situations where the mouse move slightly between press
and release event, this should be mostly notable for trackpad users.
Fixes: QTCREATORBUG-26595
Change-Id: I36ef7d23c80c09b9248abd8313c040993ece92a4
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
-rw-r--r-- | src/plugins/texteditor/texteditor.cpp | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index e0f1afe2d6..74cfe43cfc 100644 --- a/src/plugins/texteditor/texteditor.cpp +++ b/src/plugins/texteditor/texteditor.cpp @@ -5296,7 +5296,17 @@ void TextEditorWidgetPrivate::clearVisibleFoldedBlock() void TextEditorWidget::mouseMoveEvent(QMouseEvent *e) { d->requestUpdateLink(e); - d->m_linkPressed = false; + + bool onLink = false; + if (d->m_linkPressed && d->m_currentLink.hasValidTarget()) { + const int eventCursorPosition = cursorForPosition(e->pos()).position(); + if (eventCursorPosition < d->m_currentLink.linkTextStart + || eventCursorPosition > d->m_currentLink.linkTextEnd) { + d->m_linkPressed = false; + } else { + onLink = true; + } + } static Utils::optional<MultiTextCursor> startMouseMoveCursor; if (e->buttons() == Qt::LeftButton && e->modifiers() & Qt::AltModifier) { @@ -5357,7 +5367,8 @@ void TextEditorWidget::mouseMoveEvent(QMouseEvent *e) d->m_mouseOnFoldedMarker = false; viewport()->setCursor(Qt::IBeamCursor); } - } else { + } else if (!onLink || e->buttons() != Qt::LeftButton + || e->modifiers() != Qt::ControlModifier) { QPlainTextEdit::mouseMoveEvent(e); } } |