aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOrgad Shaneh <orgad.shaneh@audiocodes.com>2015-02-24 23:36:09 +0200
committerOrgad Shaneh <orgads@gmail.com>2015-02-26 13:05:37 +0000
commit93bb48893fa2eaaeae8347ab0b19ea337bc889ce (patch)
tree79db2c4380214e116d82cabb16a10d59d2f27054
parentdc08efac6f1dc3cf9a1a79e4338c6eacd74d8b86 (diff)
QtSupport: Use a fixed cursor in QtOutputFormatter
Change-Id: I5fb762cd767c31673f4dba6044db9f135e71102b Reviewed-by: Tobias Hunger <tobias.hunger@theqtcompany.com>
-rw-r--r--src/libs/utils/outputformatter.h2
-rw-r--r--src/plugins/qtsupport/qtoutputformatter.cpp17
-rw-r--r--src/plugins/qtsupport/qtoutputformatter.h1
3 files changed, 14 insertions, 6 deletions
diff --git a/src/libs/utils/outputformatter.h b/src/libs/utils/outputformatter.h
index 7179eb0447..eccaf7dce0 100644
--- a/src/libs/utils/outputformatter.h
+++ b/src/libs/utils/outputformatter.h
@@ -58,7 +58,7 @@ public:
virtual ~OutputFormatter();
QPlainTextEdit *plainTextEdit() const;
- void setPlainTextEdit(QPlainTextEdit *plainText);
+ virtual void setPlainTextEdit(QPlainTextEdit *plainText);
QFont font() const;
void setFont(const QFont &font);
diff --git a/src/plugins/qtsupport/qtoutputformatter.cpp b/src/plugins/qtsupport/qtoutputformatter.cpp
index 1f0de54877..dc8e40323d 100644
--- a/src/plugins/qtsupport/qtoutputformatter.cpp
+++ b/src/plugins/qtsupport/qtoutputformatter.cpp
@@ -81,6 +81,7 @@ public:
QPointer<Project> project;
QString lastLine;
FileInProjectFinder projectFinder;
+ QTextCursor cursor;
};
} // namespace Internal
@@ -172,14 +173,14 @@ void QtOutputFormatter::appendMessagePart(QTextCursor &cursor, const QString &tx
void QtOutputFormatter::appendMessage(const QString &txt, const QTextCharFormat &format)
{
- QTextCursor cursor(plainTextEdit()->document());
- cursor.movePosition(QTextCursor::End);
- cursor.beginEditBlock();
+ if (!d->cursor.atEnd())
+ d->cursor.movePosition(QTextCursor::End);
+ d->cursor.beginEditBlock();
foreach (const FormattedText &output, parseAnsi(txt, format))
- appendMessagePart(cursor, output.text, output.format);
+ appendMessagePart(d->cursor, output.text, output.format);
- cursor.endEditBlock();
+ d->cursor.endEditBlock();
}
void QtOutputFormatter::appendLine(QTextCursor &cursor, const LinkResult &lr,
@@ -263,6 +264,12 @@ void QtOutputFormatter::handleLink(const QString &href)
}
}
+void QtOutputFormatter::setPlainTextEdit(QPlainTextEdit *plainText)
+{
+ OutputFormatter::setPlainTextEdit(plainText);
+ d->cursor = plainText ? plainText->textCursor() : QTextCursor();
+}
+
void QtOutputFormatter::clearLastLine()
{
OutputFormatter::clearLastLine();
diff --git a/src/plugins/qtsupport/qtoutputformatter.h b/src/plugins/qtsupport/qtoutputformatter.h
index 397d7dc3e4..5adf74f796 100644
--- a/src/plugins/qtsupport/qtoutputformatter.h
+++ b/src/plugins/qtsupport/qtoutputformatter.h
@@ -63,6 +63,7 @@ public:
void appendMessage(const QString &text, Utils::OutputFormat format);
void appendMessage(const QString &text, const QTextCharFormat &format);
void handleLink(const QString &href);
+ void setPlainTextEdit(QPlainTextEdit *plainText);
protected:
void clearLastLine();