From f6c6224ebcb0bc2f815025bdf49af757d0aa773f Mon Sep 17 00:00:00 2001 From: Orgad Shaneh Date: Wed, 10 May 2017 22:48:55 +0300 Subject: [PATCH] Autotest: Avoid needless iterations over the project files Task-number: QTCREATORBUG-18185 Change-Id: I6c541cfa577331edc1ff3083d2f9b705ffc7ce73 Reviewed-by: Christian Stenger --- src/plugins/autotest/testcodeparser.cpp | 2 +- src/plugins/projectexplorer/session.cpp | 13 ++++++------- src/plugins/projectexplorer/session.h | 1 + 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/plugins/autotest/testcodeparser.cpp b/src/plugins/autotest/testcodeparser.cpp index 5b48ed1ca70..001ea5d48b0 100644 --- a/src/plugins/autotest/testcodeparser.cpp +++ b/src/plugins/autotest/testcodeparser.cpp @@ -206,7 +206,7 @@ void TestCodeParser::onDocumentUpdated(const QString &fileName) Project *project = SessionManager::startupProject(); if (!project) return; - if (!project->files(Project::SourceFiles).contains(fileName)) + if (!SessionManager::projectContainsFile(project, Utils::FileName::fromString(fileName))) return; scanForTests(QStringList(fileName)); diff --git a/src/plugins/projectexplorer/session.cpp b/src/plugins/projectexplorer/session.cpp index 5b8e6d382c0..432915f7770 100644 --- a/src/plugins/projectexplorer/session.cpp +++ b/src/plugins/projectexplorer/session.cpp @@ -74,7 +74,6 @@ namespace ProjectExplorer { class SessionManagerPrivate { public: - bool projectContainsFile(Project *p, const FileName &fileName) const; void restoreValues(const PersistentSettingsReader &reader); void restoreDependencies(const PersistentSettingsReader &reader); void restoreStartupProject(const PersistentSettingsReader &reader); @@ -658,19 +657,19 @@ Project *SessionManager::projectForFile(const Utils::FileName &fileName) { const QList &projectList = projects(); foreach (Project *p, projectList) { - if (d->projectContainsFile(p, fileName)) + if (projectContainsFile(p, fileName)) return p; } return nullptr; } -bool SessionManagerPrivate::projectContainsFile(Project *p, const Utils::FileName &fileName) const +bool SessionManager::projectContainsFile(Project *p, const Utils::FileName &fileName) { - if (!m_projectFileCache.contains(p)) - m_projectFileCache.insert(p, p->files(Project::AllFiles)); + if (!d->m_projectFileCache.contains(p)) + d->m_projectFileCache.insert(p, p->files(Project::AllFiles)); - return m_projectFileCache.value(p).contains(fileName.toString()); + return d->m_projectFileCache.value(p).contains(fileName.toString()); } void SessionManager::configureEditor(IEditor *editor, const QString &fileName) @@ -686,7 +685,7 @@ void SessionManager::configureEditor(IEditor *editor, const QString &fileName) void SessionManager::configureEditors(Project *project) { foreach (IDocument *document, DocumentModel::openedDocuments()) { - if (d->projectContainsFile(project, document->filePath())) { + if (projectContainsFile(project, document->filePath())) { foreach (IEditor *editor, DocumentModel::editorsForDocument(document)) { if (auto textEditor = qobject_cast(editor)) { project->editorConfiguration()->configureEditor(textEditor); diff --git a/src/plugins/projectexplorer/session.h b/src/plugins/projectexplorer/session.h index 8d6987363a4..a229ce58e14 100644 --- a/src/plugins/projectexplorer/session.h +++ b/src/plugins/projectexplorer/session.h @@ -115,6 +115,7 @@ public: static Project *projectForNode(Node *node); static Node *nodeForFile(const Utils::FileName &fileName); static Project *projectForFile(const Utils::FileName &fileName); + static bool projectContainsFile(Project *p, const Utils::FileName &fileName); static QStringList projectsForSessionName(const QString &session);