diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp
index 8000813c77fd07317099363d59627ec69566f1d2..7b571175d70c5d332eb81dd5358aa4caacad940d 100644
--- a/src/plugins/texteditor/basetexteditor.cpp
+++ b/src/plugins/texteditor/basetexteditor.cpp
@@ -1225,7 +1225,9 @@ void BaseTextEditor::setTextCursor(const QTextCursor &cursor)
 {
     // workaround for QTextControl bug
     bool selectionChange = cursor.hasSelection() || textCursor().hasSelection();
-    QPlainTextEdit::setTextCursor(cursor);
+    QTextCursor c = cursor;
+    c.setVisualNavigation(true);
+    QPlainTextEdit::setTextCursor(c);
     if (selectionChange)
         slotSelectionChanged();
 }