From 5aef87f1557f788384c39226e95157bc4c52c718 Mon Sep 17 00:00:00 2001 From: Marco Benelli Date: Tue, 8 May 2018 13:40:45 +0200 Subject: [PATCH] qmljs: cleanup locator's entries when closing a project Task-number: QTCREATORBUG-13459 Change-Id: Icebe06a8a49389511a12506728f2109dc0b95287 Reviewed-by: Robert Loehning --- src/plugins/qmljstools/qmljslocatordata.cpp | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) 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); } } -