diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2020-09-11 15:52:53 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2020-09-14 10:00:03 +0000 |
commit | 226982b7b026fea5f8e8cf36da2e544de882b6e2 (patch) | |
tree | 3e1ed074a1c7abe020eca7793816c953347f6522 | |
parent | 6ab70135797ce4354502cf1444a22c9c95787a6f (diff) |
OutputFormatter: Fix flushing a pending line feed
... for the edge case of a lone carriage return occurring in the output.
Amends b0cad9e9c7.
Also adds missing adaptations to the unit test.
Change-Id: I219b24b8fb41bb0fcea9f677cd79286d03b130c2
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
-rw-r--r-- | src/libs/utils/outputformatter.cpp | 2 | ||||
-rw-r--r-- | src/plugins/coreplugin/outputwindow.cpp | 5 |
2 files changed, 4 insertions, 3 deletions
diff --git a/src/libs/utils/outputformatter.cpp b/src/libs/utils/outputformatter.cpp index 49cb31d3e5..eb6e974dff 100644 --- a/src/libs/utils/outputformatter.cpp +++ b/src/libs/utils/outputformatter.cpp @@ -429,6 +429,7 @@ void OutputFormatter::append(const QString &text, const QTextCharFormat &format) { if (!plainTextEdit()) return; + flushTrailingNewline(); int startPos = 0; int crPos = -1; while ((crPos = text.indexOf('\r', startPos)) >= 0) { @@ -437,7 +438,6 @@ void OutputFormatter::append(const QString &text, const QTextCharFormat &format) d->cursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); startPos = crPos + 1; } - flushTrailingNewline(); if (startPos < text.count()) d->cursor.insertText(text.mid(startPos), format); } diff --git a/src/plugins/coreplugin/outputwindow.cpp b/src/plugins/coreplugin/outputwindow.cpp index 9d58bae06a..80fb566698 100644 --- a/src/plugins/coreplugin/outputwindow.cpp +++ b/src/plugins/coreplugin/outputwindow.cpp @@ -590,7 +590,7 @@ class TestFormatterA : public OutputLineParser private: Result handleLine(const QString &text, OutputFormat) override { - static const QString replacement = "handled by A\n"; + static const QString replacement = "handled by A"; if (m_handling) { if (text.startsWith("A")) { m_handling = false; @@ -615,7 +615,7 @@ private: Result handleLine(const QString &text, OutputFormat) override { if (text.startsWith("B")) - return {Status::Done, {}, QString("handled by B\n")}; + return {Status::Done, {}, QString("handled by B")}; return Status::NotHandled; } }; @@ -656,6 +656,7 @@ void Internal::CorePlugin::testOutputFormatter() formatter.setLineParsers({new TestFormatterB, new TestFormatterA}); formatter.appendMessage(input.left(i), StdOutFormat); formatter.appendMessage(input.mid(i), StdOutFormat); + formatter.flush(); QCOMPARE(textEdit.toPlainText(), output); } } |