diff --git a/src/plugins/texteditor/basetexteditor.cpp b/src/plugins/texteditor/basetexteditor.cpp
index 2598bd69e62a00db9d316f3f5b5b30bc32285480..61e50d3f7b1cb379c4fa6f29db3409cfbdaaa743 100644
--- a/src/plugins/texteditor/basetexteditor.cpp
+++ b/src/plugins/texteditor/basetexteditor.cpp
@@ -3651,19 +3651,7 @@ void BaseTextEditor::indentOrUnindent(bool doIndent)
 
     QTextDocument *doc = document();
 
-    if (!cursor.hasSelection() && doIndent) {
-        // Insert tab if there is no selection and indent is requested
-        QTextBlock block = cursor.block();
-        QString text = block.text();
-        int indentPosition = (cursor.position() - block.position());;
-        int spaces = tabSettings.spacesLeftFromPosition(text, indentPosition);
-        int startColumn = tabSettings.columnAt(text, indentPosition - spaces);
-        int targetColumn = tabSettings.indentedColumn(tabSettings.columnAt(text, indentPosition), doIndent);
-        cursor.setPosition(block.position() + indentPosition);
-        cursor.setPosition(block.position() + indentPosition - spaces, QTextCursor::KeepAnchor);
-        cursor.removeSelectedText();
-        cursor.insertText(tabSettings.indentationString(startColumn, targetColumn, block));
-    } else {
+    if (cursor.hasSelection()) {
         // Indent or unindent the selected lines
         int anchor = cursor.anchor();
         int start = qMin(anchor, pos);
@@ -3684,6 +3672,18 @@ void BaseTextEditor::indentOrUnindent(bool doIndent)
             cursor.setPosition(block.position() + indentPosition, QTextCursor::KeepAnchor);
             cursor.removeSelectedText();
         }
+    } else {
+        // Indent or unindent at cursor position
+        QTextBlock block = cursor.block();
+        QString text = block.text();
+        int indentPosition = cursor.positionInBlock();
+        int spaces = tabSettings.spacesLeftFromPosition(text, indentPosition);
+        int startColumn = tabSettings.columnAt(text, indentPosition - spaces);
+        int targetColumn = tabSettings.indentedColumn(tabSettings.columnAt(text, indentPosition), doIndent);
+        cursor.setPosition(block.position() + indentPosition);
+        cursor.setPosition(block.position() + indentPosition - spaces, QTextCursor::KeepAnchor);
+        cursor.removeSelectedText();
+        cursor.insertText(tabSettings.indentationString(startColumn, targetColumn, block));
     }
 
     cursor.endEditBlock();