diff options
author | Orgad Shaneh <orgad.shaneh@audiocodes.com> | 2015-02-24 23:20:00 +0200 |
---|---|---|
committer | Orgad Shaneh <orgads@gmail.com> | 2015-02-25 13:45:34 +0000 |
commit | 5044056296cb7fb734c26279abf3dacf2726c665 (patch) | |
tree | 9c4144305e62475df4653e74e179299ce64ade5f /src/libs/utils/outputformatter.cpp | |
parent | bcdd6d4ca080c83681519eaa0ffbe20cc6c9cf96 (diff) |
Utils: Use a fixed cursor in OutputFormatter
Change-Id: I3652aac881a7be955f11d57afb783142064ad256
Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
Diffstat (limited to 'src/libs/utils/outputformatter.cpp')
-rw-r--r-- | src/libs/utils/outputformatter.cpp | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/src/libs/utils/outputformatter.cpp b/src/libs/utils/outputformatter.cpp index 975a60805b..7db2589c16 100644 --- a/src/libs/utils/outputformatter.cpp +++ b/src/libs/utils/outputformatter.cpp @@ -33,6 +33,7 @@ #include "theme/theme.h" #include <QPlainTextEdit> +#include <QTextCursor> namespace Utils { @@ -58,6 +59,7 @@ public: QPlainTextEdit *plainTextEdit; QTextCharFormat *formats; QFont font; + QTextCursor cursor; AnsiEscapeCodeHandler *escapeCodeHandler; bool overwriteOutput; }; @@ -82,6 +84,7 @@ QPlainTextEdit *OutputFormatter::plainTextEdit() const void OutputFormatter::setPlainTextEdit(QPlainTextEdit *plainText) { d->plainTextEdit = plainText; + d->cursor = plainText ? plainText->textCursor() : QTextCursor(); initFormats(); } @@ -92,19 +95,19 @@ void OutputFormatter::appendMessage(const QString &text, OutputFormat format) void OutputFormatter::appendMessage(const QString &text, const QTextCharFormat &format) { - QTextCursor cursor(d->plainTextEdit->document()); - cursor.movePosition(QTextCursor::End); + if (!d->cursor.atEnd()) + d->cursor.movePosition(QTextCursor::End); foreach (const FormattedText &output, parseAnsi(text, format)) { int startPos = 0; int crPos = -1; while ((crPos = output.text.indexOf(QLatin1Char('\r'), startPos)) >= 0) { - append(cursor, output.text.mid(startPos, crPos - startPos), output.format); + append(d->cursor, output.text.mid(startPos, crPos - startPos), output.format); startPos = crPos + 1; d->overwriteOutput = true; } if (startPos < output.text.count()) - append(cursor, output.text.mid(startPos), output.format); + append(d->cursor, output.text.mid(startPos), output.format); } } @@ -131,10 +134,10 @@ void OutputFormatter::append(QTextCursor &cursor, const QString &text, void OutputFormatter::clearLastLine() { - QTextCursor cursor(d->plainTextEdit->document()); - cursor.movePosition(QTextCursor::End); - cursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); - cursor.removeSelectedText(); + if (!d->cursor.atEnd()) + d->cursor.movePosition(QTextCursor::End); + d->cursor.movePosition(QTextCursor::StartOfBlock, QTextCursor::KeepAnchor); + d->cursor.removeSelectedText(); } void OutputFormatter::initFormats() |