From 784de5fb6c75d129055cd767e2eaef2e020d59b5 Mon Sep 17 00:00:00 2001 From: Jarek Kobus Date: Fri, 12 Feb 2021 10:32:54 +0100 Subject: [PATCH] ClassView: don't clear project's file list cache when files removed Instead of clearing the project's file list completely, remove just a project (in case a removed file was a project) and remove from all project's lists the removed file (in case a removed file was contained in any project). Task-number: QTCREATORBUG-25317 Change-Id: I63a5f9eb1043bd0d9b835d55f4a16f7f6af7bc6e Reviewed-by: Christian Kandeler --- src/plugins/classview/classviewparser.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/plugins/classview/classviewparser.cpp b/src/plugins/classview/classviewparser.cpp index 99ab7adcc9e..c2abae643f3 100644 --- a/src/plugins/classview/classviewparser.cpp +++ b/src/plugins/classview/classviewparser.cpp @@ -572,13 +572,15 @@ void Parser::removeFiles(const QStringList &fileList) QWriteLocker lockerPrj(&d->prjLocker); QWriteLocker lockerDoc(&d->docLocker); - foreach (const QString &name, fileList) { + for (const QString &name : fileList) { d->fileList.remove(name); d->cachedDocTrees.remove(name); d->cachedDocTreesRevision.remove(name); d->documentList.remove(name); d->cachedPrjTrees.remove(name); - d->cachedPrjFileLists.clear(); + d->cachedPrjFileLists.remove(name); + for (auto it = d->cachedPrjFileLists.begin(); it != d->cachedPrjFileLists.end(); ++it) + it.value().removeOne(name); } }