diff --git a/src/plugins/coreplugin/documentmanager.cpp b/src/plugins/coreplugin/documentmanager.cpp index 44ca515d717..7752c6a922a 100644 --- a/src/plugins/coreplugin/documentmanager.cpp +++ b/src/plugins/coreplugin/documentmanager.cpp @@ -149,7 +149,7 @@ public: QMap m_states; // filePathKey -> FileState QSet m_changedFiles; // watched file paths collected from file watcher notifications QList m_documentsWithoutWatch; - QMap m_documentsWithWatch; // document -> list of filePathKeys + QHash m_documentsWithWatch; // document -> list of filePathKeys QSet m_expectedFileNames; // set of file paths without normalization QList m_recentFiles; @@ -367,9 +367,10 @@ void DocumentManager::addDocuments(const QList &documents, bool add static void removeFileInfo(IDocument *document) { QTC_ASSERT(isMainThread(), return); - if (!d->m_documentsWithWatch.contains(document)) + const auto it = d->m_documentsWithWatch.constFind(document); + if (it == d->m_documentsWithWatch.constEnd()) return; - const FilePaths filePaths = d->m_documentsWithWatch.value(document); + const FilePaths filePaths = *it; for (const FilePath &filePath : filePaths) { if (!d->m_states.contains(filePath)) continue; @@ -393,7 +394,7 @@ static void removeFileInfo(IDocument *document) d->m_states.remove(filePath); } } - d->m_documentsWithWatch.remove(document); + d->m_documentsWithWatch.erase(it); } /// Dumps the state of the file manager's map @@ -448,9 +449,8 @@ void DocumentManager::renamedFile(const Utils::FilePath &from, const Utils::File // gather the list of IDocuments QList documentsToRename; - for (auto it = d->m_documentsWithWatch.cbegin(), end = d->m_documentsWithWatch.cend(); - it != end; ++it) { - if (it.value().contains(fromKey)) + for (auto it = d->m_documentsWithWatch.cbegin(); it != d->m_documentsWithWatch.cend(); ++it) { + if (it->contains(fromKey)) documentsToRename.append(it.key()); } @@ -544,9 +544,8 @@ QList DocumentManager::modifiedDocuments() { QList modified; - const auto docEnd = d->m_documentsWithWatch.keyEnd(); - for (auto docIt = d->m_documentsWithWatch.keyBegin(); docIt != docEnd; ++docIt) { - IDocument *document = *docIt; + for (auto it = d->m_documentsWithWatch.cbegin(); it != d->m_documentsWithWatch.cend(); ++it) { + IDocument *document = it.key(); if (document->isModified()) modified << document; }