Autotest: Avoid needless iterations over the project files

Task-number: QTCREATORBUG-18185
Change-Id: I6c541cfa577331edc1ff3083d2f9b705ffc7ce73
Reviewed-by: Christian Stenger <christian.stenger@qt.io>
This commit is contained in:
Orgad Shaneh
2017-05-10 22:48:55 +03:00
committed by Orgad Shaneh
parent c7d7cb9d40
commit f6c6224ebc
3 changed files with 8 additions and 8 deletions

View File

@@ -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));

View File

@@ -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<Project *> &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<TextEditor::BaseTextEditor*>(editor)) {
project->editorConfiguration()->configureEditor(textEditor);

View File

@@ -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);