From 2529b62315edc7aafe8407ea2de898923d085f9e Mon Sep 17 00:00:00 2001 From: David Schulz Date: Wed, 20 Apr 2022 15:10:43 +0200 Subject: [PATCH] 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 Reviewed-by: Christian Stenger --- src/plugins/texteditor/texteditor.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/plugins/texteditor/texteditor.cpp b/src/plugins/texteditor/texteditor.cpp index e0f1afe2d6f..74cfe43cfce 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 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); } }