diff --git a/src/plugins/qmljstools/qmljslocatordata.cpp b/src/plugins/qmljstools/qmljslocatordata.cpp index d7ee5e61543..36aa5c4010d 100644 --- a/src/plugins/qmljstools/qmljslocatordata.cpp +++ b/src/plugins/qmljstools/qmljslocatordata.cpp @@ -25,6 +25,9 @@ #include "qmljslocatordata.h" +#include +#include + #include #include //#include @@ -40,10 +43,25 @@ LocatorData::LocatorData() { ModelManagerInterface *manager = ModelManagerInterface::instance(); + // Force the updating of source file when updating a project (they could be cached, in such + // case LocatorData::onDocumentUpdated will not be called. + connect(manager, &ModelManagerInterface::projectInfoUpdated, + [manager](const ModelManagerInterface::ProjectInfo &info) { + QStringList files; + for (const Utils::FileName &f: info.project->files(ProjectExplorer::Project::SourceFiles)) + files << f.toString(); + manager->updateSourceFiles(files, true); + }); + connect(manager, &ModelManagerInterface::documentUpdated, this, &LocatorData::onDocumentUpdated); connect(manager, &ModelManagerInterface::aboutToRemoveFiles, this, &LocatorData::onAboutToRemoveFiles); + + ProjectExplorer::SessionManager *session = ProjectExplorer::SessionManager::instance(); + if (session) + connect(session, &ProjectExplorer::SessionManager::projectRemoved, + [this] (ProjectExplorer::Project*) { m_entries.clear(); }); } LocatorData::~LocatorData() @@ -233,4 +251,3 @@ void LocatorData::onAboutToRemoveFiles(const QStringList &files) m_entries.remove(file); } } -