forked from qt-creator/qt-creator
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 <fawzi.mohamed@digia.com>
This commit is contained in:
@@ -556,23 +556,31 @@ void CppModelManager::updateProjectInfo(const ProjectInfo &pinfo)
|
||||
return;
|
||||
|
||||
ProjectExplorer::Project *project = pinfo.project().data();
|
||||
m_projects.insert(project, pinfo);
|
||||
m_dirty = true;
|
||||
|
||||
m_srcToProjectPart.clear();
|
||||
|
||||
foreach (const ProjectInfo &projectInfo, m_projects) {
|
||||
foreach (const ProjectPart::Ptr &projectPart, projectInfo.projectParts()) {
|
||||
ProjectInfo oldProjectInfo = m_projects.value(project);
|
||||
if (oldProjectInfo.isValid()) {
|
||||
foreach (const ProjectPart::Ptr &projectPart, oldProjectInfo.projectParts()) {
|
||||
foreach (const ProjectFile &cxxFile, projectPart->files) {
|
||||
m_srcToProjectPart[cxxFile.path].append(projectPart);
|
||||
foreach (const QString &fileName, m_snapshot.allIncludesForDocument(cxxFile.path))
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!qgetenv("QTCREATOR_DUMP_PROJECT_INFO").isEmpty())
|
||||
|
Reference in New Issue
Block a user