From 45850c23f214103294c7f00fa93de8a244b018a3 Mon Sep 17 00:00:00 2001
From: Daniel Teske <daniel.teske@nokia.com>
Date: Wed, 15 Feb 2012 13:39:10 +0100
Subject: [PATCH] Move BaseTextDocument::documentClosing to
 BaseTextDocumentLayout

Centralizing mark handling

Change-Id: Ie29c15d97aa171fbf3516d4242fe3f962091477a
Reviewed-by: Eike Ziller <eike.ziller@nokia.com>
---
 src/plugins/texteditor/basetextdocument.cpp      | 16 ++++------------
 src/plugins/texteditor/basetextdocument.h        |  1 -
 .../texteditor/basetextdocumentlayout.cpp        | 12 ++++++++++++
 src/plugins/texteditor/basetextdocumentlayout.h  |  1 +
 4 files changed, 17 insertions(+), 13 deletions(-)

diff --git a/src/plugins/texteditor/basetextdocument.cpp b/src/plugins/texteditor/basetextdocument.cpp
index c9641d3f2c7..9234b2821f2 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 0939eabaf36..39f9b67c2b5 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 46bede5c716..0973c6bd1b2 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 80d614190b4..4f052a93b30 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);
 };
-- 
GitLab