diff --git a/src/plugins/qt4projectmanager/qt4nodes.cpp b/src/plugins/qt4projectmanager/qt4nodes.cpp index 34b68973de90aacfe4a642dbbe0a773c68b83f9f..cac4c5914112202e040093555f2f4bbe124496fc 100644 --- a/src/plugins/qt4projectmanager/qt4nodes.cpp +++ b/src/plugins/qt4projectmanager/qt4nodes.cpp @@ -226,8 +226,8 @@ namespace Internal { QList<FolderNode *> foldersToRemove; QList<FolderNode *> foldersToAdd; - QList<InternalNode *> internalNodesToUpdate; - QList<FolderNode *> folderNodesToUpdate; + typedef QPair<InternalNode *, FolderNode *> NodePair; + QList<NodePair> nodesToUpdate; // newFolders is already sorted qSort(existingFolderNodes.begin(), existingFolderNodes.end(), ProjectNode::sortFolderNodesByName); @@ -245,12 +245,10 @@ namespace Internal { if (!newNodeIter.value()->icon.isNull()) newNode->setIcon(newNodeIter.value()->icon); foldersToAdd << newNode; - internalNodesToUpdate << newNodeIter.value(); - folderNodesToUpdate << newNode; + nodesToUpdate << NodePair(newNodeIter.value(), newNode); ++newNodeIter; } else { // *existingNodeIter->path() == *newPathIter - internalNodesToUpdate << newNodeIter.value(); - folderNodesToUpdate << *existingNodeIter; + nodesToUpdate << NodePair(newNodeIter.value(), *existingNodeIter); ++existingNodeIter; ++newNodeIter; } @@ -266,8 +264,7 @@ namespace Internal { if (!newNodeIter.value()->icon.isNull()) newNode->setIcon(newNodeIter.value()->icon); foldersToAdd << newNode; - internalNodesToUpdate << newNodeIter.value(); - folderNodesToUpdate << newNode; + nodesToUpdate << NodePair(newNodeIter.value(), newNode); ++newNodeIter; } @@ -276,14 +273,8 @@ namespace Internal { if (!foldersToAdd.isEmpty()) projectNode->addFolderNodes(foldersToAdd, folder); - QList<FolderNode *>::const_iterator folderIt = folderNodesToUpdate.constBegin(); - QList<InternalNode *>::const_iterator iNodeIt = internalNodesToUpdate.constBegin(); - while (folderIt != folderNodesToUpdate.constEnd() - && iNodeIt != internalNodesToUpdate.constEnd()) { - (*iNodeIt)->updateSubFolders(projectNode, *folderIt); - ++folderIt; - ++iNodeIt; - } + foreach (const NodePair &np, nodesToUpdate) + np.first->updateSubFolders(projectNode, np.second); } // Makes the folder's files match this internal node's file list