diff options
| author | Mike Skec <skec@protonmail.ch> | 2021-03-01 21:25:43 +1100 |
|---|---|---|
| committer | Felix Queißner <felix@ib-queissner.de> | 2021-03-01 11:30:44 +0100 |
| commit | a23494dc3247ccb0844a32da5da5e9250f58a4fe (patch) | |
| tree | fb482bb656b5e4a94dd95f0db0f6db0de7a9d02d /src/renderers/renderhelpers.cpp | |
| parent | 65e873802525b39d066aea70d4fd4bf0750b856a (diff) | |
| download | kristall-a23494dc3247ccb0844a32da5da5e9250f58a4fe.tar.gz | |
Fix double line-feed in plain text documents
Diffstat (limited to 'src/renderers/renderhelpers.cpp')
| -rw-r--r-- | src/renderers/renderhelpers.cpp | 16 |
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;; |
