From 51d91a6075164f4168c06db3e53fc04e1dd3eb8e Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Mon, 25 Nov 2013 15:22:58 +0100 Subject: [PATCH] CppTools: Add revisions to AbstractEditorSupport So far revisions for AbstractEditorSupport were not needed because until recently we only had a single snapshot ("global snapshot"). Now, since editor snapshots are introduced, we need to make sure to update the corresponding documents in these snapshots, too. To do this efficiently, a revision is introduced for AbstractEditorSupport. Task-number: QTCREATORBUG-10894 Change-Id: Ibad1dbbafb7c721d1328959c1e903345fe465326 Reviewed-by: Christian Stenger Reviewed-by: Erik Verbruggen --- src/plugins/cpptools/abstracteditorsupport.cpp | 3 ++- src/plugins/cpptools/abstracteditorsupport.h | 2 ++ src/plugins/cpptools/cppmodelmanager.cpp | 2 +- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/plugins/cpptools/abstracteditorsupport.cpp b/src/plugins/cpptools/abstracteditorsupport.cpp index cdbd86f342b..ee48c39a33d 100644 --- a/src/plugins/cpptools/abstracteditorsupport.cpp +++ b/src/plugins/cpptools/abstracteditorsupport.cpp @@ -38,7 +38,7 @@ namespace CppTools { AbstractEditorSupport::AbstractEditorSupport(CppModelManagerInterface *modelmanager) : - m_modelmanager(modelmanager) + m_modelmanager(modelmanager), m_revision(0) { } @@ -48,6 +48,7 @@ AbstractEditorSupport::~AbstractEditorSupport() void AbstractEditorSupport::updateDocument() { + ++m_revision; m_modelmanager->updateSourceFiles(QStringList(fileName())); } diff --git a/src/plugins/cpptools/abstracteditorsupport.h b/src/plugins/cpptools/abstracteditorsupport.h index e45a50e791f..9b5616c6902 100644 --- a/src/plugins/cpptools/abstracteditorsupport.h +++ b/src/plugins/cpptools/abstracteditorsupport.h @@ -50,6 +50,7 @@ public: virtual QString fileName() const = 0; void updateDocument(); + unsigned revision() const { return m_revision; } // TODO: find a better place for common utility functions static QString functionAt(const CppModelManagerInterface *mm, @@ -60,6 +61,7 @@ public: private: CppModelManagerInterface *m_modelmanager; + unsigned m_revision; }; } // namespace CppTools diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index 4d5e8a1d9d6..cbf11126bc8 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -550,7 +550,7 @@ CppModelManager::WorkingCopy CppModelManager::buildWorkingCopyList() QSetIterator it(m_extraEditorSupports); while (it.hasNext()) { AbstractEditorSupport *es = it.next(); - workingCopy.insert(es->fileName(), es->contents()); + workingCopy.insert(es->fileName(), es->contents(), es->revision()); } // Add the project configuration file