Superfluous new lines in application output.

Fix the use of appendPlainText for automatic scrolling.
This commit is contained in:
con
2009-08-04 15:56:22 +02:00
parent 33bbae9e5e
commit 3a81f2a393

View File

@@ -351,22 +351,34 @@ OutputWindow::~OutputWindow()
void OutputWindow::appendOutput(const QString &out) void OutputWindow::appendOutput(const QString &out)
{ {
if (out.endsWith('\n')) if (out.endsWith('\n'))
appendPlainText(out); appendPlainText(out.right(out.length()-1));
else else
appendPlainText(out + '\n'); appendPlainText(out);
} }
void OutputWindow::appendOutputInline(const QString &out) void OutputWindow::appendOutputInline(const QString &out)
{ {
moveCursor(QTextCursor::End);
int newline = out.indexOf(QLatin1Char('\n')); int newline = out.indexOf(QLatin1Char('\n'));
if (newline < 0) { if (newline < 0) {
insertPlainText(out); moveCursor(QTextCursor::End);
insertPlainText(out); // doesn't insert additional '\n' like appendPlainText
return; return;
} }
insertPlainText(out.left(newline)); int lastnewline = out.lastIndexOf(QLatin1Char('\n'));
if (newline < out.length()) // make sure that we use appendPlainText to add the last newline
appendPlainText(out.mid(newline+1)); // in the string, so we get automatic scrolling
// and work around the fact that appendPlainText also ensures
// a newline in front of the appended text
if (lastnewline > 0) {
moveCursor(QTextCursor::End);
insertPlainText(out.left(lastnewline));
}
appendPlainText(""); // add the newline
if (lastnewline < out.length()-1) { // newline is not last character
moveCursor(QTextCursor::End);
insertPlainText(out.mid(lastnewline+1));
}
} }
void OutputWindow::insertLine() void OutputWindow::insertLine()