Made Join Lines work with a multi-line selection

This commit is contained in:
Thorbjørn Lindeijer
2010-01-21 15:14:35 +01:00
parent bf4b5879b4
commit 8f8ee59d2c

View File

@@ -879,25 +879,36 @@ void BaseTextEditor::copyLineUpDown(bool up)
void BaseTextEditor::joinLines()
{
QTextCursor move = textCursor();
move.beginEditBlock();
QTextCursor cursor = textCursor();
QTextCursor start = cursor;
QTextCursor end = cursor;
move.movePosition(QTextCursor::NextBlock);
move.movePosition(QTextCursor::StartOfBlock);
move.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor);
QString cutLine = move.selectedText();
start.setPosition(cursor.selectionStart());
end.setPosition(cursor.selectionEnd() - 1);
// Collapse leading whitespaces to one or insert whitespace
cutLine.replace(QRegExp("^\\s*"), " ");
move.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor);
move.removeSelectedText();
int lineCount = qMax(1, end.blockNumber() - start.blockNumber());
move.movePosition(QTextCursor::PreviousBlock);
move.movePosition(QTextCursor::EndOfBlock);
cursor.beginEditBlock();
cursor.setPosition(cursor.selectionStart());
while (lineCount--) {
cursor.movePosition(QTextCursor::NextBlock);
cursor.movePosition(QTextCursor::StartOfBlock);
cursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor);
QString cutLine = cursor.selectedText();
move.insertText(cutLine);
move.endEditBlock();
setTextCursor(move);
// Collapse leading whitespaces to one or insert whitespace
cutLine.replace(QRegExp("^\\s*"), " ");
cursor.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor);
cursor.removeSelectedText();
cursor.movePosition(QTextCursor::PreviousBlock);
cursor.movePosition(QTextCursor::EndOfBlock);
cursor.insertText(cutLine);
}
cursor.endEditBlock();
setTextCursor(cursor);
}
void BaseTextEditor::moveLineUp()