diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2022-10-19 13:09:57 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2022-10-24 10:07:26 +0000 |
commit | 8608386c3668169a4065f6313918469713ff649f (patch) | |
tree | 218efddb6614757fe05836059d63b661f422994c /src/libs/cplusplus/CppDocument.cpp | |
parent | 7092d8da221ba8cfb79eab994194656ec19e369d (diff) | |
download | qt-creator-8608386c3668169a4065f6313918469713ff649f.tar.gz |
CppEditor: Adapt include locations when renaming ui files
Fixes: QTCREATORBUG-14259
Change-Id: I5e8209338b531f0e65d85b423053bd19a8b47652
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
Diffstat (limited to 'src/libs/cplusplus/CppDocument.cpp')
-rw-r--r-- | src/libs/cplusplus/CppDocument.cpp | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/src/libs/cplusplus/CppDocument.cpp b/src/libs/cplusplus/CppDocument.cpp index a121594c8e..12ce8ea0cd 100644 --- a/src/libs/cplusplus/CppDocument.cpp +++ b/src/libs/cplusplus/CppDocument.cpp @@ -784,15 +784,31 @@ QSet<QString> Snapshot::allIncludesForDocument(const QString &fileName) const return result; } -QList<Snapshot::IncludeLocation> Snapshot::includeLocationsOfDocument(const QString &fileName) const -{ +QList<Snapshot::IncludeLocation> Snapshot::includeLocationsOfDocument( + const QString &fileNameOrPath) const +{ + const bool matchFullPath = Utils::FilePath::fromString(fileNameOrPath).isAbsolutePath(); + const auto isMatch = [&](const Document::Include &include) { + if (matchFullPath) + return include.resolvedFileName() == fileNameOrPath; + return Utils::FilePath::fromString(include.resolvedFileName()).fileName() == fileNameOrPath; + }; QList<IncludeLocation> result; for (const_iterator cit = begin(), citEnd = end(); cit != citEnd; ++cit) { const Document::Ptr doc = cit.value(); const QList<Document::Include> includeFiles = doc->resolvedIncludes(); + bool foundMatch = false; for (const Document::Include &includeFile : includeFiles) { - if (includeFile.resolvedFileName() == fileName) + if (isMatch(includeFile)) { + foundMatch = true; result.push_back({doc, includeFile.line()}); + } + } + if (!matchFullPath && !foundMatch) { + for (const auto &includeFile : cit.value()->unresolvedIncludes()) { + if (includeFile.unresolvedFileName() == fileNameOrPath) + result.push_back({doc, includeFile.line()}); + } } } return result; |