forked from qt-creator/qt-creator
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:
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user