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();