summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cpptoolsplugin.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/cpptools/cpptoolsplugin.cpp')
-rw-r--r--src/plugins/cpptools/cpptoolsplugin.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/plugins/cpptools/cpptoolsplugin.cpp b/src/plugins/cpptools/cpptoolsplugin.cpp
index 2ae47b1143..c08b639e47 100644
--- a/src/plugins/cpptools/cpptoolsplugin.cpp
+++ b/src/plugins/cpptools/cpptoolsplugin.cpp
@@ -261,13 +261,16 @@ static int commonStringLength(const QString &s1, const QString &s2)
QString CppToolsPlugin::correspondingHeaderOrSourceI(const QString &fileName) const
{
+ const QFileInfo fi(fileName);
+ if (m_headerSourceMapping.contains(fi.absoluteFilePath()))
+ return m_headerSourceMapping.value(fi.absoluteFilePath());
+
const Core::ICore *core = Core::ICore::instance();
const Core::MimeDatabase *mimeDatase = core->mimeDatabase();
ProjectExplorer::ProjectExplorerPlugin *explorer =
ProjectExplorer::ProjectExplorerPlugin::instance();
ProjectExplorer::Project *project = (explorer ? explorer->currentProject() : 0);
- const QFileInfo fi(fileName);
const FileType type = fileType(mimeDatase, fi);
if (debug)
@@ -298,8 +301,11 @@ QString CppToolsPlugin::correspondingHeaderOrSourceI(const QString &fileName) co
// Try to find a file in the same directory first
foreach (const QString &candidateFileName, candidateFileNames) {
const QFileInfo candidateFi(absoluteDir, candidateFileName);
- if (candidateFi.isFile())
+ if (candidateFi.isFile()) {
+ m_headerSourceMapping[fi.absoluteFilePath()] = candidateFi.absoluteFilePath();
+ m_headerSourceMapping[candidateFi.absoluteFilePath()] = fi.absoluteFilePath();
return candidateFi.absoluteFilePath();
+ }
}
// Find files in the project
@@ -320,6 +326,8 @@ QString CppToolsPlugin::correspondingHeaderOrSourceI(const QString &fileName) co
if (!bestFileName.isEmpty()) {
const QFileInfo candidateFi(bestFileName);
Q_ASSERT(candidateFi.isFile());
+ m_headerSourceMapping[fi.absoluteFilePath()] = candidateFi.absoluteFilePath();
+ m_headerSourceMapping[candidateFi.absoluteFilePath()] = fi.absoluteFilePath();
return candidateFi.absoluteFilePath();
}
}