From 93bb48893fa2eaaeae8347ab0b19ea337bc889ce Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Tue, 24 Feb 2015 23:36:09 +0200 Subject: QtSupport: Use a fixed cursor in QtOutputFormatter Change-Id: I5fb762cd767c31673f4dba6044db9f135e71102b Reviewed-by: Tobias Hunger --- src/libs/utils/outputformatter.h | 2 +- src/plugins/qtsupport/qtoutputformatter.cpp | 17 ++++++++++++----- src/plugins/qtsupport/qtoutputformatter.h | 1 + 3 files changed, 14 insertions(+), 6 deletions(-) (limited to 'src') 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; 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(); -- cgit v1.2.1