QmakeProjectManager: Fix node addition order

First add the nodes, then add the subnodes. This is the correct
fix for

Change-Id: I50834ba7e0221623abe2954c88c47322677c142d
Task-number: QTCREATORBUG-14134
Reviewed-by: Christian Stenger <christian.stenger@theqtcompany.com>
Reviewed-by: Eike Ziller <eike.ziller@theqtcompany.com>
Reviewed-by: Orgad Shaneh <orgads@gmail.com>
This commit is contained in:
Daniel Teske
2015-03-13 15:40:57 +01:00
parent 089f1b1bb3
commit c874e1dd73
2 changed files with 7 additions and 3 deletions

View File

@@ -427,7 +427,7 @@ void FlatModel::recursiveAddFileNodes(FolderNode *startNode, QList<Node *> *list
QList<Node*> FlatModel::childNodes(FolderNode *parentNode, const QSet<Node*> &blackList) const
{
qCDebug(logger()) << "FlatModel::childNodes for " << parentNode->displayName();
qCDebug(logger()) << " FlatModel::childNodes for " << parentNode->path();
QList<Node*> nodeList;
if (parentNode->nodeType() == SessionNodeType) {
@@ -442,7 +442,7 @@ QList<Node*> FlatModel::childNodes(FolderNode *parentNode, const QSet<Node*> &bl
recursiveAddFileNodes(parentNode, &nodeList, blackList + nodeList.toSet());
}
Utils::sort(nodeList, sortNodes);
qCDebug(logger()) << " found" << nodeList.size() << "nodes";
qCDebug(logger()) << " found" << nodeList.size() << "nodes";
return nodeList;
}

View File

@@ -2105,6 +2105,7 @@ void QmakeProFileNode::applyEvaluate(EvalResult *evalResult)
QList<ProjectNode*> toAdd;
QList<ProjectNode*> toRemove;
QList<QmakePriFileNode *> toUpdate;
QList<ProjectNode*>::const_iterator existingIt = existingProjectNodes.constBegin();
FileNameList::const_iterator newExactIt = result->newProjectFilesExact.constBegin();
@@ -2208,8 +2209,8 @@ void QmakeProFileNode::applyEvaluate(EvalResult *evalResult)
QmakePriFileNode *qmakePriFileNode = new QmakePriFileNode(m_project, this, nodeToAdd);
qmakePriFileNode->setParentFolderNode(this); // Needed for loop detection
qmakePriFileNode->setIncludedInExactParse(fileExact != 0 && includedInExactParse());
qmakePriFileNode->update(result->priFileResults[nodeToAdd]);
toAdd << qmakePriFileNode;
toUpdate << qmakePriFileNode;
} else {
QmakeProFileNode *qmakeProFileNode = new QmakeProFileNode(m_project, nodeToAdd);
qmakeProFileNode->setParentFolderNode(this); // Needed for loop detection
@@ -2235,6 +2236,9 @@ void QmakeProFileNode::applyEvaluate(EvalResult *evalResult)
if (!toAdd.isEmpty())
addProjectNodes(toAdd);
foreach (QmakePriFileNode *qmakePriFileNode, toUpdate)
qmakePriFileNode->update(result->priFileResults[qmakePriFileNode->path()]);
QmakePriFileNode::update(result->priFileResults[m_projectFilePath]);
m_validParse = (result->state == EvalResult::EvalOk);