aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2020-09-11 15:52:53 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2020-09-14 10:00:03 +0000
commit226982b7b026fea5f8e8cf36da2e544de882b6e2 (patch)
tree3e1ed074a1c7abe020eca7793816c953347f6522
parent6ab70135797ce4354502cf1444a22c9c95787a6f (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.cpp2
-rw-r--r--src/plugins/coreplugin/outputwindow.cpp5
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);
}
}