Fixed problem with indentation when auto-indent is turned off

When auto-indent is turned off, Qt Creator uses a simplistic approach of
copying the indentation string from the previous line. This was broken
when the cursor was positioned inside the indentation, since this caused
part of the indentation to go to the next line, which was then prepended
with the copied indentation, in effect increasing the indentation for
each new line.

The solution here was to copy the indentation from the previous block
only after inserting the new block, which causes the indentation of the
previous line to be cut off by exactly the right amount to keep the
indentation constant.

Task-number: QTCREATORBUG-396
Reviewed-by: mae
This commit is contained in:
Thorbjørn Lindeijer
2009-12-03 15:46:05 +01:00
parent cc6c543a75
commit 67bbce7911

View File

@@ -928,8 +928,10 @@ void BaseTextEditor::keyPressEvent(QKeyEvent *e)
cursor.insertBlock();
indent(document(), cursor, QChar::Null);
} else {
QString previousBlockText = cursor.block().text();
cursor.insertBlock();
// After inserting the block, to avoid duplicating whitespace on the same line
const QString previousBlockText = cursor.block().previous().text();
cursor.insertText(ts.indentationString(previousBlockText));
}
cursor.endEditBlock();