diff --git a/src/plugins/texteditor/basetextdocument.cpp b/src/plugins/texteditor/basetextdocument.cpp index c9641d3f2c778bd8a03e9815f1e0cdf0ff427430..9234b2821f279d1b2cec4fe9288cf21c5ce3689e 100644 --- a/src/plugins/texteditor/basetextdocument.cpp +++ b/src/plugins/texteditor/basetextdocument.cpp @@ -97,7 +97,6 @@ BaseTextDocument::BaseTextDocument() : d(new BaseTextDocumentPrivate(this)) BaseTextDocument::~BaseTextDocument() { - documentClosing(); delete d->m_document; d->m_document = 0; delete d; @@ -377,7 +376,10 @@ bool BaseTextDocument::reload(QString *errorString, QTextCodec *codec) bool BaseTextDocument::reload(QString *errorString) { emit aboutToReload(); - documentClosing(); // removes text marks non-permanently + BaseTextDocumentLayout *documentLayout = + qobject_cast<BaseTextDocumentLayout*>(d->m_document->documentLayout()); + if (documentLayout) + documentLayout->documentClosing(); // removes text marks non-permanently if (!open(errorString, d->m_fileName, d->m_fileName)) return false; @@ -471,16 +473,6 @@ void BaseTextDocument::ensureFinalNewLine(QTextCursor& cursor) } } -void BaseTextDocument::documentClosing() -{ - QTextBlock block = d->m_document->begin(); - while (block.isValid()) { - if (TextBlockUserData *data = static_cast<TextBlockUserData *>(block.userData())) - data->documentClosing(); - block = block.next(); - } -} - bool BaseTextDocument::hasHighlightWarning() const { return d->m_hasHighlightWarning; diff --git a/src/plugins/texteditor/basetextdocument.h b/src/plugins/texteditor/basetextdocument.h index 0939eabaf365f1234f9db45aa3e5eaafabe9e551..39f9b67c2b504bb25bf63c31904690b72dfa8562 100644 --- a/src/plugins/texteditor/basetextdocument.h +++ b/src/plugins/texteditor/basetextdocument.h @@ -110,7 +110,6 @@ signals: private: void cleanWhitespace(QTextCursor &cursor, bool cleanIndentation, bool inEntireDocument); void ensureFinalNewLine(QTextCursor &cursor); - void documentClosing(); BaseTextDocumentPrivate *d; }; diff --git a/src/plugins/texteditor/basetextdocumentlayout.cpp b/src/plugins/texteditor/basetextdocumentlayout.cpp index 46bede5c716ebd2f9fbd705c7505b91369230e68..0973c6bd1b2a9e75aea36a177ffd4777d0719c28 100644 --- a/src/plugins/texteditor/basetextdocumentlayout.cpp +++ b/src/plugins/texteditor/basetextdocumentlayout.cpp @@ -516,6 +516,7 @@ BaseTextDocumentLayout::BaseTextDocumentLayout(QTextDocument *doc) BaseTextDocumentLayout::~BaseTextDocumentLayout() { + documentClosing(); } void BaseTextDocumentLayout::setParentheses(const QTextBlock &block, const Parentheses &parentheses) @@ -699,6 +700,17 @@ QSizeF BaseTextDocumentLayout::documentSize() const return size; } +void BaseTextDocumentLayout::documentClosing() +{ + QTextBlock block = document()->begin(); + while (block.isValid()) { + if (TextBlockUserData *data = static_cast<TextBlockUserData *>(block.userData())) + data->documentClosing(); + block = block.next(); + } +} + + void BaseTextDocumentLayout::updateMarksLineNumber() { QTextBlock block = document()->begin(); diff --git a/src/plugins/texteditor/basetextdocumentlayout.h b/src/plugins/texteditor/basetextdocumentlayout.h index 80d614190b4b3d9cf83850d4efdef3de2e973d96..4f052a93b30b1fcfb2c562e79264c14be5fd5f28 100644 --- a/src/plugins/texteditor/basetextdocumentlayout.h +++ b/src/plugins/texteditor/basetextdocumentlayout.h @@ -214,6 +214,7 @@ public: QSizeF documentSize() const; + void documentClosing(); void updateMarksLineNumber(); void updateMarksBlock(const QTextBlock &block); };