From 1fad00f9991b86c3a329410c95f148b6ce3ef0d3 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Fri, 28 Jun 2013 11:26:02 +0200 Subject: CppTools: Fix snapshot in case another project is opened When a second project was opened the snapshot was reset. That resulted in all kinds of problems since from then on the code model effectively was not aware of the files of the first project. The regression was introduced by commit a0d6df7b. Change-Id: I1ccc9de68177205b49a4ba8ead2bc8abe4592b32 Reviewed-by: Fawzi Mohamed --- src/plugins/cpptools/cppmodelmanager.cpp | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) (limited to 'src/plugins/cpptools/cppmodelmanager.cpp') diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index b26bb706e6..b7abbe2d2d 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -556,23 +556,31 @@ void CppModelManager::updateProjectInfo(const ProjectInfo &pinfo) return; ProjectExplorer::Project *project = pinfo.project().data(); + ProjectInfo oldProjectInfo = m_projects.value(project); + if (oldProjectInfo.isValid()) { + foreach (const ProjectPart::Ptr &projectPart, oldProjectInfo.projectParts()) { + foreach (const ProjectFile &cxxFile, projectPart->files) { + foreach (const QString &fileName, + m_snapshot.allIncludesForDocument(cxxFile.path)) { + m_snapshot.remove(fileName); + } + m_snapshot.remove(cxxFile.path); + } + } + } + m_snapshot.remove(configurationFileName()); + m_projects.insert(project, pinfo); m_dirty = true; m_srcToProjectPart.clear(); - foreach (const ProjectInfo &projectInfo, m_projects) { foreach (const ProjectPart::Ptr &projectPart, projectInfo.projectParts()) { foreach (const ProjectFile &cxxFile, projectPart->files) { m_srcToProjectPart[cxxFile.path].append(projectPart); - foreach (const QString &fileName, m_snapshot.allIncludesForDocument(cxxFile.path)) - m_snapshot.remove(fileName); - m_snapshot.remove(cxxFile.path); } } } - - m_snapshot.remove(configurationFileName()); } if (!qgetenv("QTCREATOR_DUMP_PROJECT_INFO").isEmpty()) -- cgit v1.2.1