forked from qt-creator/qt-creator
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:
committed by
Orgad Shaneh
parent
c7d7cb9d40
commit
f6c6224ebc
@@ -206,7 +206,7 @@ void TestCodeParser::onDocumentUpdated(const QString &fileName)
|
|||||||
Project *project = SessionManager::startupProject();
|
Project *project = SessionManager::startupProject();
|
||||||
if (!project)
|
if (!project)
|
||||||
return;
|
return;
|
||||||
if (!project->files(Project::SourceFiles).contains(fileName))
|
if (!SessionManager::projectContainsFile(project, Utils::FileName::fromString(fileName)))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
scanForTests(QStringList(fileName));
|
scanForTests(QStringList(fileName));
|
||||||
|
@@ -74,7 +74,6 @@ namespace ProjectExplorer {
|
|||||||
class SessionManagerPrivate
|
class SessionManagerPrivate
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
bool projectContainsFile(Project *p, const FileName &fileName) const;
|
|
||||||
void restoreValues(const PersistentSettingsReader &reader);
|
void restoreValues(const PersistentSettingsReader &reader);
|
||||||
void restoreDependencies(const PersistentSettingsReader &reader);
|
void restoreDependencies(const PersistentSettingsReader &reader);
|
||||||
void restoreStartupProject(const PersistentSettingsReader &reader);
|
void restoreStartupProject(const PersistentSettingsReader &reader);
|
||||||
@@ -658,19 +657,19 @@ Project *SessionManager::projectForFile(const Utils::FileName &fileName)
|
|||||||
{
|
{
|
||||||
const QList<Project *> &projectList = projects();
|
const QList<Project *> &projectList = projects();
|
||||||
foreach (Project *p, projectList) {
|
foreach (Project *p, projectList) {
|
||||||
if (d->projectContainsFile(p, fileName))
|
if (projectContainsFile(p, fileName))
|
||||||
return p;
|
return p;
|
||||||
}
|
}
|
||||||
|
|
||||||
return nullptr;
|
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))
|
if (!d->m_projectFileCache.contains(p))
|
||||||
m_projectFileCache.insert(p, p->files(Project::AllFiles));
|
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)
|
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)
|
void SessionManager::configureEditors(Project *project)
|
||||||
{
|
{
|
||||||
foreach (IDocument *document, DocumentModel::openedDocuments()) {
|
foreach (IDocument *document, DocumentModel::openedDocuments()) {
|
||||||
if (d->projectContainsFile(project, document->filePath())) {
|
if (projectContainsFile(project, document->filePath())) {
|
||||||
foreach (IEditor *editor, DocumentModel::editorsForDocument(document)) {
|
foreach (IEditor *editor, DocumentModel::editorsForDocument(document)) {
|
||||||
if (auto textEditor = qobject_cast<TextEditor::BaseTextEditor*>(editor)) {
|
if (auto textEditor = qobject_cast<TextEditor::BaseTextEditor*>(editor)) {
|
||||||
project->editorConfiguration()->configureEditor(textEditor);
|
project->editorConfiguration()->configureEditor(textEditor);
|
||||||
|
@@ -115,6 +115,7 @@ public:
|
|||||||
static Project *projectForNode(Node *node);
|
static Project *projectForNode(Node *node);
|
||||||
static Node *nodeForFile(const Utils::FileName &fileName);
|
static Node *nodeForFile(const Utils::FileName &fileName);
|
||||||
static Project *projectForFile(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);
|
static QStringList projectsForSessionName(const QString &session);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user