From 314bc49144c353c59b040d389a51e2bfa986551a Mon Sep 17 00:00:00 2001 From: Tobias Hunger <tobias.hunger@digia.com> Date: Fri, 19 Apr 2013 13:19:41 +0200 Subject: [PATCH] Revert "Qbs: Remove implicit Group with the same name as the Product" This got applied in the wrong sequence. This reverts commit 850e3eda14e41884c53932b67dffd573c2616c43 Change-Id: I604ba711e63cf207af6bca6110320632ec3cb72a Reviewed-by: Tobias Hunger <tobias.hunger@digia.com> --- src/plugins/qbsprojectmanager/qbsnodes.cpp | 63 ++++++++-------------- src/plugins/qbsprojectmanager/qbsnodes.h | 14 ++--- 2 files changed, 26 insertions(+), 51 deletions(-) diff --git a/src/plugins/qbsprojectmanager/qbsnodes.cpp b/src/plugins/qbsprojectmanager/qbsnodes.cpp index b363286bf59..5a3f93a81f9 100644 --- a/src/plugins/qbsprojectmanager/qbsnodes.cpp +++ b/src/plugins/qbsprojectmanager/qbsnodes.cpp @@ -285,11 +285,10 @@ void QbsGroupNode::setGroup(const qbs::GroupData *group, const QString &productP m_productPath = productPath; - // Set Product file node used to jump to the product setPath(group->location().fileName); setDisplayName(group->name()); - // set up file node... + // Set Product file node used to jump to the product QbsFileNode *indexFile = 0; if (!m_group) { indexFile = new QbsFileNode(group->location().fileName, @@ -303,15 +302,6 @@ void QbsGroupNode::setGroup(const qbs::GroupData *group, const QString &productP indexFile->emitNodeUpdated(); } - m_group = group; - - setGroup(this, group, productPath, QList<ProjectExplorer::Node *>() << indexFile); - emitNodeUpdated(); -} - -void QbsGroupNode::setGroup(QbsBaseProjectNode *root, const qbs::GroupData *group, - const QString &productPath, QList<ProjectExplorer::Node *> keepers) -{ // Build up a tree of nodes: FileTreeNode *tree = new FileTreeNode(QString()); @@ -325,13 +315,16 @@ void QbsGroupNode::setGroup(QbsBaseProjectNode *root, const qbs::GroupData *grou FileTreeNode::reorder(tree, productPath, tree); FileTreeNode::simplify(tree); - setupFolders(root, root, tree, productPath, keepers); + setupFolders(this, tree, productPath, QList<ProjectExplorer::Node *>() << indexFile); + delete tree; + + m_group = group; + emitNodeUpdated(); } -void QbsGroupNode::setupFolders(QbsBaseProjectNode *topLevel, ProjectExplorer::FolderNode *root, - FileTreeNode *node, const QString &baseDirPath, - QList<ProjectExplorer::Node *> keepers) +void QbsGroupNode::setupFolders(ProjectExplorer::FolderNode *root, FileTreeNode *node, + const QString &baseDirPath, QList<ProjectExplorer::Node *> keepers) { QList<ProjectExplorer::FileNode *> filesToRemove; foreach (ProjectExplorer::FileNode *fn, root->fileNodes()) { @@ -367,7 +360,7 @@ void QbsGroupNode::setupFolders(QbsBaseProjectNode *topLevel, ProjectExplorer::F ProjectExplorer::FolderNode *fn = root->findSubFolder(path); if (path == baseDirPath) { - setupFolders(topLevel, root, c, c->path(), foldersToKeep); + setupFolders(root, c, c->path(), foldersToKeep); continue; } @@ -379,14 +372,14 @@ void QbsGroupNode::setupFolders(QbsBaseProjectNode *topLevel, ProjectExplorer::F foldersToRemove.removeOne(fn); } else { fn = new ProjectExplorer::FolderNode(path); - topLevel->addFolderNodes(QList<ProjectExplorer::FolderNode *>() << fn, root); + addFolderNodes(QList<ProjectExplorer::FolderNode *>() << fn, root); } foldersToKeep.append(fn); - setupFolders(topLevel, fn, c, c->path()); + setupFolders(fn, c, c->path()); } - topLevel->removeFileNodes(filesToRemove, root); - topLevel->removeFolderNodes(foldersToRemove, root); - topLevel->addFileNodes(filesToAdd, root); + addFileNodes(filesToAdd, root); + removeFileNodes(filesToRemove, root); + removeFolderNodes(foldersToRemove, root); } // -------------------------------------------------------------------- @@ -417,38 +410,28 @@ void QbsProductNode::setProduct(const qbs::ProductData *prd) // Set Product file node used to jump to the product QList<ProjectExplorer::FileNode *> files = fileNodes(); - QList<ProjectExplorer::Node *> toKeep; if (files.isEmpty()) { - QbsFileNode *idx = new QbsFileNode(prd->location().fileName, - ProjectExplorer::ProjectFileType, false, - prd->location().line); - addFileNodes(QList<ProjectExplorer::FileNode *>() << idx, this); - toKeep.append(idx); + addFileNodes(QList<ProjectExplorer::FileNode *>() + << new QbsFileNode(prd->location().fileName, + ProjectExplorer::ProjectFileType, false, + prd->location().line), + this); } else { - QbsFileNode *idx = static_cast<QbsFileNode *>(files.at(0)); - idx->setPath(prd->location().fileName); - idx->setLine(prd->location().line); - toKeep.append(idx); + QbsFileNode *qbsFile = static_cast<QbsFileNode *>(files.at(0)); + qbsFile->setPath(prd->location().fileName); + qbsFile->setLine(prd->location().line); } QList<ProjectExplorer::ProjectNode *> toAdd; QList<ProjectExplorer::ProjectNode *> toRemove = subProjectNodes(); foreach (const qbs::GroupData &grp, prd->groups()) { - if (grp.name() == prd->name() && grp.location() == prd->location()) { - // Set implicit product group right onto this node: - QbsGroupNode::setGroup(this, &grp, productPath, toKeep); - continue; - } QbsGroupNode *qn = findGroupNode(grp.name()); if (qn) { toRemove.removeAll(qn); - toKeep.append(qn); qn->setGroup(&grp, productPath); } else { - qn = new QbsGroupNode(&grp, productPath); - toAdd.append(qn); - toKeep.append(qn); + toAdd << new QbsGroupNode(&grp, productPath); } } diff --git a/src/plugins/qbsprojectmanager/qbsnodes.h b/src/plugins/qbsprojectmanager/qbsnodes.h index 76135f88fb6..88e06e8f5be 100644 --- a/src/plugins/qbsprojectmanager/qbsnodes.h +++ b/src/plugins/qbsprojectmanager/qbsnodes.h @@ -68,8 +68,6 @@ private: class QbsGroupNode; -class QbsGroupNode; - class QbsBaseProjectNode : public ProjectExplorer::ProjectNode { Q_OBJECT @@ -100,9 +98,6 @@ public: const QString &newFilePath); QList<ProjectExplorer::RunConfiguration *> runConfigurationsFor(Node *node); - -private: - friend class QbsGroupNode; }; // -------------------------------------------------------------------- @@ -122,13 +117,10 @@ public: QString productPath() const; - static void setGroup(QbsBaseProjectNode *root, const qbs::GroupData *group, - const QString &productPath, QList<Node *> keepers); - private: - static void setupFolders(QbsBaseProjectNode *topLevel, FolderNode *root, FileTreeNode *node, - const QString &baseDirPath, - QList<ProjectExplorer::Node *> keepers = QList<ProjectExplorer::Node *>()); + void setupFolders(ProjectExplorer::FolderNode *root, FileTreeNode *node, + const QString &baseDirPath, + QList<ProjectExplorer::Node *> keepers = QList<ProjectExplorer::Node *>()); const qbs::GroupData *m_group; QString m_productPath; -- GitLab