summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cppprojectpartchooser.cpp
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@qt.io>2017-01-19 11:08:13 +0100
committerNikolai Kosjar <nikolai.kosjar@qt.io>2017-01-26 07:50:05 +0000
commit07f32ef57ab34afc421e217048ce068a5501bb33 (patch)
treec83f83c7870671011a162f2c5e72fdf237db4b40 /src/plugins/cpptools/cppprojectpartchooser.cpp
parentec3dcfd6ad6719baa96aae26e0b775db1408e6e3 (diff)
downloadqt-creator-07f32ef57ab34afc421e217048ce068a5501bb33.tar.gz
CppTools: Use fallback project part if project is closed
...instead of sticking to the old one. If a project is closed, the editor should reflect that. It also simplifies the code. Change-Id: I9b8a94513d3b06a238cfc4ee60c11c0d0da3d93f Reviewed-by: David Schulz <david.schulz@qt.io>
Diffstat (limited to 'src/plugins/cpptools/cppprojectpartchooser.cpp')
-rw-r--r--src/plugins/cpptools/cppprojectpartchooser.cpp12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/plugins/cpptools/cppprojectpartchooser.cpp b/src/plugins/cpptools/cppprojectpartchooser.cpp
index 816bddb592..85dbf254e8 100644
--- a/src/plugins/cpptools/cppprojectpartchooser.cpp
+++ b/src/plugins/cpptools/cppprojectpartchooser.cpp
@@ -124,9 +124,8 @@ private:
ProjectPartInfo ProjectPartChooser::choose(
const QString &filePath,
- const ProjectPart::Ptr &currentProjectPart,
+ const ProjectPartInfo &currentProjectPartInfo,
const ProjectPart::Ptr &manuallySetProjectPart,
- bool stickToPreviousProjectPart,
const ProjectExplorer::Project *activeProject,
Language languagePreference,
bool projectHasChanged) const
@@ -138,15 +137,14 @@ ProjectPartInfo ProjectPartChooser::choose(
if (manuallySetProjectPart)
return {manuallySetProjectPart, ProjectPartInfo::NoHint};
- ProjectPart::Ptr projectPart = currentProjectPart;
+ ProjectPart::Ptr projectPart = currentProjectPartInfo.projectPart;
ProjectPartInfo::Hint hint = ProjectPartInfo::NoHint;
QList<ProjectPart::Ptr> projectParts = m_projectPartsForFile(filePath);
if (projectParts.isEmpty()) {
- if (projectPart && stickToPreviousProjectPart)
- // File is not directly part of any project, but we got one before. We will re-use it,
- // because re-calculating this can be expensive when the dependency table is big.
- return {projectPart, ProjectPartInfo::NoHint};
+ if (projectPart && currentProjectPartInfo.hint == ProjectPartInfo::IsFallbackMatch)
+ // Avoid re-calculating the expensive dependency table for non-project files.
+ return {projectPart, ProjectPartInfo::IsFallbackMatch};
// Fall-back step 1: Get some parts through the dependency table:
projectParts = m_projectPartsFromDependenciesForFile(filePath);