aboutsummaryrefslogtreecommitdiff
path: root/src/renderers/renderhelpers.cpp
diff options
context:
space:
mode:
authorMike Skec <skec@protonmail.ch>2021-03-01 21:25:43 +1100
committerFelix Queißner <felix@ib-queissner.de>2021-03-01 11:30:44 +0100
commita23494dc3247ccb0844a32da5da5e9250f58a4fe (patch)
treefb482bb656b5e4a94dd95f0db0f6db0de7a9d02d /src/renderers/renderhelpers.cpp
parent65e873802525b39d066aea70d4fd4bf0750b856a (diff)
downloadkristall-a23494dc3247ccb0844a32da5da5e9250f58a4fe.tar.gz
Fix double line-feed in plain text documents
Diffstat (limited to 'src/renderers/renderhelpers.cpp')
-rw-r--r--src/renderers/renderhelpers.cpp16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/renderers/renderhelpers.cpp b/src/renderers/renderhelpers.cpp
index 6fc5bc9..5f9925b 100644
--- a/src/renderers/renderhelpers.cpp
+++ b/src/renderers/renderhelpers.cpp
@@ -324,12 +324,26 @@ static void parseCSI(
}
}
+// Replaces CR-LF line endings with pure LF endings,
+// and then replaces any remaining CRs with LFs.
+static QString cleanLineEndings(QString &input)
+{
+ // Replace all CR-LF with LF
+ input.replace("\r\n", "\n");
+
+ // Replace stray CRs with LF
+ input.replace("\r", "\n");
+
+ return input;
+}
+
void renderhelpers::renderEscapeCodes(const QByteArray &input,
const QTextCharFormat& format, QTextCursor& cursor)
{
auto textFormat = format;
const auto tokens = input.split(escapeString);
- const auto inputString = QString::fromUtf8(input);
+ QString inputString = QString::fromUtf8(input);
+ cleanLineEndings(inputString);
for (QString::const_iterator it = inputString.cbegin(); it != inputString.cend(); ++it)
{
const auto currentCharacter = *it;;