QmlJS: keep track of cursor position in reformatting

Task-number: QTCREATORBUG-18416
Change-Id: I30c07e0bff1b3f3933ff0e4aee8f1f2c81bd5ef6
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This commit is contained in:
Marco Benelli
2017-06-22 14:59:53 +02:00
parent 29cf39bfd6
commit 2123aebf65

View File

@@ -258,10 +258,16 @@ void QmlJSEditorPlugin::reformatFile()
return;
const QString &newText = QmlJS::reformat(document);
QTextCursor tc(m_currentDocument->document());
tc.movePosition(QTextCursor::Start);
tc.movePosition(QTextCursor::End, QTextCursor::KeepAnchor);
tc.insertText(newText);
QmlJSEditorWidget *widget = EditorManager::currentEditor()
? qobject_cast<QmlJSEditorWidget*>(EditorManager::currentEditor()->widget())
: nullptr;
if (widget) {
const int position = widget->position();
m_currentDocument->document()->setPlainText(newText);
widget->setCursorPosition(position);
} else {
m_currentDocument->document()->setPlainText(newText);
}
}
}