summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2019-12-03 16:28:56 +0100
committerChristian Kandeler <christian.kandeler@qt.io>2019-12-04 10:08:46 +0000
commit62455bea60cd2bccf151534829b43d9f7eac2491 (patch)
tree63ca1846736f443a31e68754a8b5889d44e5fa5b
parent0758b58ceb1d23e0cef4c80df2a601ed963cdb84 (diff)
downloadqt-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.cpp13
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();