diff --git a/src/plugins/projectexplorer/outputwindow.cpp b/src/plugins/projectexplorer/outputwindow.cpp index f5ee12607f87e536255a1524c45402476a0e6519..157df34d9888dead1d94dab847966b7fca56dd24 100644 --- a/src/plugins/projectexplorer/outputwindow.cpp +++ b/src/plugins/projectexplorer/outputwindow.cpp @@ -351,22 +351,34 @@ OutputWindow::~OutputWindow() void OutputWindow::appendOutput(const QString &out) { if (out.endsWith('\n')) - appendPlainText(out); + appendPlainText(out.right(out.length()-1)); else - appendPlainText(out + '\n'); + appendPlainText(out); } + void OutputWindow::appendOutputInline(const QString &out) { - moveCursor(QTextCursor::End); int newline = out.indexOf(QLatin1Char('\n')); if (newline < 0) { - insertPlainText(out); + moveCursor(QTextCursor::End); + insertPlainText(out); // doesn't insert additional '\n' like appendPlainText return; } - insertPlainText(out.left(newline)); - if (newline < out.length()) - appendPlainText(out.mid(newline+1)); + int lastnewline = out.lastIndexOf(QLatin1Char('\n')); + // make sure that we use appendPlainText to add the last newline + // 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()