diff options
author | Christian Kamm <christian.d.kamm@nokia.com> | 2011-08-26 13:31:18 +0200 |
---|---|---|
committer | Christian Kamm <christian.d.kamm@nokia.com> | 2011-08-30 12:00:44 +0200 |
commit | 650b280b308809a2f0c748cb2ad591046dc372fd (patch) | |
tree | c983fb256a9687e14df6deffbfbb6a5958033989 /src | |
parent | c264f5b23c95f7177921d747e8bb9317be81dec8 (diff) | |
download | qt-creator-650b280b308809a2f0c748cb2ad591046dc372fd.tar.gz |
QmlJS: Ensure project infos are removed when a project closes.
As a side effect, this removes parse errors of QML files that are no
longer in any project from the "Build Issues" list.
Change-Id: I7aef8850a207ac060648dc92e2dd759108b71731
Reviewed-on: http://codereview.qt.nokia.com/3668
Reviewed-by: Fawzi Mohamed <fawzi.mohamed@nokia.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/libs/qmljs/qmljsmodelmanagerinterface.h | 1 | ||||
-rw-r--r-- | src/plugins/qmljstools/qmljsmodelmanager.cpp | 19 | ||||
-rw-r--r-- | src/plugins/qmljstools/qmljsmodelmanager.h | 1 |
3 files changed, 21 insertions, 0 deletions
diff --git a/src/libs/qmljs/qmljsmodelmanagerinterface.h b/src/libs/qmljs/qmljsmodelmanagerinterface.h index c021341e5d..891350c68a 100644 --- a/src/libs/qmljs/qmljsmodelmanagerinterface.h +++ b/src/libs/qmljs/qmljsmodelmanagerinterface.h @@ -131,6 +131,7 @@ public: virtual QList<ProjectInfo> projectInfos() const = 0; virtual ProjectInfo projectInfo(ProjectExplorer::Project *project) const = 0; virtual void updateProjectInfo(const ProjectInfo &pinfo) = 0; + Q_SLOT virtual void removeProjectInfo(ProjectExplorer::Project *project) = 0; virtual QStringList importPaths() const = 0; diff --git a/src/plugins/qmljstools/qmljsmodelmanager.cpp b/src/plugins/qmljstools/qmljsmodelmanager.cpp index bc4c1cfc94..47292d489b 100644 --- a/src/plugins/qmljstools/qmljsmodelmanager.cpp +++ b/src/plugins/qmljstools/qmljsmodelmanager.cpp @@ -102,6 +102,12 @@ void ModelManager::delayedInitialization() connect(cppModelManager, SIGNAL(documentUpdated(CPlusPlus::Document::Ptr)), this, SLOT(maybeQueueCppQmlTypeUpdate(CPlusPlus::Document::Ptr)), Qt::DirectConnection); } + + ProjectExplorer::SessionManager *sessionManager = ProjectExplorer::ProjectExplorerPlugin::instance()->session(); + if (sessionManager) { + connect(sessionManager, SIGNAL(projectRemoved(ProjectExplorer::Project*)), + this, SLOT(removeProjectInfo(ProjectExplorer::Project*))); + } } void ModelManager::loadQmlTypeDescriptions() @@ -303,6 +309,19 @@ void ModelManager::updateProjectInfo(const ProjectInfo &pinfo) emit projectInfoUpdated(pinfo); } + +void ModelManager::removeProjectInfo(ProjectExplorer::Project *project) +{ + ProjectInfo info(project); + // update with an empty project info to clear data + updateProjectInfo(info); + + { + QMutexLocker locker(&m_mutex); + m_projects.remove(project); + } +} + void ModelManager::emitDocumentChangedOnDisk(Document::Ptr doc) { emit documentChangedOnDisk(doc); } diff --git a/src/plugins/qmljstools/qmljsmodelmanager.h b/src/plugins/qmljstools/qmljsmodelmanager.h index a6803a008f..fd00825a88 100644 --- a/src/plugins/qmljstools/qmljsmodelmanager.h +++ b/src/plugins/qmljstools/qmljsmodelmanager.h @@ -80,6 +80,7 @@ public: virtual QList<ProjectInfo> projectInfos() const; virtual ProjectInfo projectInfo(ProjectExplorer::Project *project) const; virtual void updateProjectInfo(const ProjectInfo &pinfo); + Q_SLOT virtual void removeProjectInfo(ProjectExplorer::Project *project); void updateDocument(QmlJS::Document::Ptr doc); void updateLibraryInfo(const QString &path, const QmlJS::LibraryInfo &info); |