diff --git a/src/libs/utils/ansiescapecodehandler.cpp b/src/libs/utils/ansiescapecodehandler.cpp index 91f13d9a25e..74e14f2c46d 100644 --- a/src/libs/utils/ansiescapecodehandler.cpp +++ b/src/libs/utils/ansiescapecodehandler.cpp @@ -5,6 +5,8 @@ #include "qtcassert.h" +#include + namespace Utils { /*! @@ -268,6 +270,20 @@ void AnsiEscapeCodeHandler::endFormatScope() m_previousFormatClosed = true; } +void AnsiEscapeCodeHandler::setTextInEditor(QPlainTextEdit *editor, const QString &text) +{ + AnsiEscapeCodeHandler handler; + const QList formattedTextList = handler.parseText(FormattedText(text)); + editor->clear(); + QTextCursor cursor = editor->textCursor(); + cursor.beginEditBlock(); + for (const auto &formattedChunk : formattedTextList) + cursor.insertText(formattedChunk.text, formattedChunk.format); + cursor.endEditBlock(); + cursor.movePosition(QTextCursor::Start); + editor->document()->setModified(false); +} + void AnsiEscapeCodeHandler::setFormatScope(const QTextCharFormat &charFormat) { m_previousFormat = charFormat; diff --git a/src/libs/utils/ansiescapecodehandler.h b/src/libs/utils/ansiescapecodehandler.h index 5277f6d4e76..ef0aef2b2f0 100644 --- a/src/libs/utils/ansiescapecodehandler.h +++ b/src/libs/utils/ansiescapecodehandler.h @@ -7,6 +7,10 @@ #include +QT_BEGIN_NAMESPACE +class QPlainTextEdit; +QT_END_NAMESPACE + namespace Utils { class QTCREATOR_UTILS_EXPORT FormattedText { @@ -25,6 +29,7 @@ class QTCREATOR_UTILS_EXPORT AnsiEscapeCodeHandler public: QList parseText(const FormattedText &input); void endFormatScope(); + static void setTextInEditor(QPlainTextEdit *editor, const QString &text); private: void setFormatScope(const QTextCharFormat &charFormat); diff --git a/src/plugins/git/giteditor.cpp b/src/plugins/git/giteditor.cpp index b6223f80207..ded53ff5dfe 100644 --- a/src/plugins/git/giteditor.cpp +++ b/src/plugins/git/giteditor.cpp @@ -186,17 +186,7 @@ void GitEditorWidget::setPlainText(const QString &text) switch (contentType()) { case LogOutput: { - AnsiEscapeCodeHandler handler; - const QList formattedTextList = handler.parseText(FormattedText(text)); - - clear(); - QTextCursor cursor = textCursor(); - cursor.beginEditBlock(); - for (const auto &formattedChunk : formattedTextList) - cursor.insertText(formattedChunk.text, formattedChunk.format); - cursor.endEditBlock(); - document()->setModified(false); - + AnsiEscapeCodeHandler::setTextInEditor(this, text); return; } case AnnotateOutput: