TextEditor: always replace cursor

Otherwise some internal data might be outdated. For example inserting
text resets the QTextCursorPrivate::x which is used to calculate
positions when moving the cursor up or down.

Fixes: QTCREATORBUG-26635
Change-Id: I9fee7436a3648f9d3eab7b30f8a09a134c5be356
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
This commit is contained in:
David Schulz
2021-12-02 10:16:42 +01:00
parent 2e42c99522
commit dbc4cd6f4a

View File

@@ -6257,10 +6257,10 @@ MultiTextCursor TextEditorWidget::multiTextCursor() const
void TextEditorWidget::setMultiTextCursor(const Utils::MultiTextCursor &cursor) void TextEditorWidget::setMultiTextCursor(const Utils::MultiTextCursor &cursor)
{ {
if (d->m_cursors == cursor) const MultiTextCursor oldCursor = d->m_cursors;
return;
MultiTextCursor oldCursor = d->m_cursors;
const_cast<MultiTextCursor &>(d->m_cursors) = cursor; const_cast<MultiTextCursor &>(d->m_cursors) = cursor;
if (oldCursor == d->m_cursors)
return;
doSetTextCursor(d->m_cursors.mainCursor(), /*keepMultiSelection*/ true); doSetTextCursor(d->m_cursors.mainCursor(), /*keepMultiSelection*/ true);
QRect updateRect = d->cursorUpdateRect(oldCursor); QRect updateRect = d->cursorUpdateRect(oldCursor);
if (d->m_highlightCurrentLine) if (d->m_highlightCurrentLine)