aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/utils/outputformatter.cpp
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2015-02-24 23:20:00 +0200
committerOrgad Shaneh <orgads@gmail.com>2015-02-25 13:45:34 +0000
commit5044056296cb7fb734c26279abf3dacf2726c665 (patch)
tree9c4144305e62475df4653e74e179299ce64ade5f /src/libs/utils/outputformatter.cpp
parentbcdd6d4ca080c83681519eaa0ffbe20cc6c9cf96 (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.cpp19
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()