diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2019-12-03 16:28:56 +0100 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2019-12-04 10:08:46 +0000 |
commit | 62455bea60cd2bccf151534829b43d9f7eac2491 (patch) | |
tree | 63ca1846736f443a31e68754a8b5889d44e5fa5b | |
parent | 0758b58ceb1d23e0cef4c80df2a601ed963cdb84 (diff) | |
download | qt-creator-62455bea60cd2bccf151534829b43d9f7eac2491.tar.gz |
Output panes: Handle the case where an output chunk is split
...right between '\r' and '\n'.
Change-Id: Id372cd9a099ef933af4836e20aebc1fc0fd8d5a8
Reviewed-by: Alessandro Portale <alessandro.portale@qt.io>
-rw-r--r-- | src/plugins/coreplugin/outputwindow.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/plugins/coreplugin/outputwindow.cpp b/src/plugins/coreplugin/outputwindow.cpp index cc87baaa15..fe054ea1aa 100644 --- a/src/plugins/coreplugin/outputwindow.cpp +++ b/src/plugins/coreplugin/outputwindow.cpp @@ -62,6 +62,7 @@ public: QString settingsKey; bool enforceNewline = false; + bool prependCarriageReturn = false; bool scrollToBottom = true; bool linksActive = true; bool zoomEnabled = false; @@ -383,7 +384,16 @@ int OutputWindow::maxCharCount() const void OutputWindow::appendMessage(const QString &output, OutputFormat format) { - QString out = SynchronousProcess::normalizeNewlines(output); + QString out = output; + if (d->prependCarriageReturn) { + d->prependCarriageReturn = false; + out.prepend('\r'); + } + out = SynchronousProcess::normalizeNewlines(out); + if (out.endsWith('\r')) { + d->prependCarriageReturn = true; + out.chop(1); + } if (out.size() > d->maxCharCount) { // Current line alone exceeds limit, we need to cut it. @@ -497,6 +507,7 @@ bool OutputWindow::isScrollbarAtBottom() const void OutputWindow::clear() { d->enforceNewline = false; + d->prependCarriageReturn = false; QPlainTextEdit::clear(); if (d->formatter) d->formatter->clear(); |