summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Schulz <david.schulz@qt.io>2022-04-20 15:10:43 +0200
committerDavid Schulz <david.schulz@qt.io>2022-04-21 08:01:23 +0000
commit2529b62315edc7aafe8407ea2de898923d085f9e (patch)
tree36fb480385279e901c2b4534f638c20658a91ffc
parentd1686e18679fd229d2bfa45828a79004cad1e052 (diff)
downloadqt-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.cpp15
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);
}
}