forked from qt-creator/qt-creator
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>
This commit is contained in:
@@ -285,11 +285,10 @@ void QbsGroupNode::setGroup(const qbs::GroupData *group, const QString &productP
|
|||||||
|
|
||||||
m_productPath = productPath;
|
m_productPath = productPath;
|
||||||
|
|
||||||
// Set Product file node used to jump to the product
|
|
||||||
setPath(group->location().fileName);
|
setPath(group->location().fileName);
|
||||||
setDisplayName(group->name());
|
setDisplayName(group->name());
|
||||||
|
|
||||||
// set up file node...
|
// Set Product file node used to jump to the product
|
||||||
QbsFileNode *indexFile = 0;
|
QbsFileNode *indexFile = 0;
|
||||||
if (!m_group) {
|
if (!m_group) {
|
||||||
indexFile = new QbsFileNode(group->location().fileName,
|
indexFile = new QbsFileNode(group->location().fileName,
|
||||||
@@ -303,15 +302,6 @@ void QbsGroupNode::setGroup(const qbs::GroupData *group, const QString &productP
|
|||||||
indexFile->emitNodeUpdated();
|
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:
|
// Build up a tree of nodes:
|
||||||
FileTreeNode *tree = new FileTreeNode(QString());
|
FileTreeNode *tree = new FileTreeNode(QString());
|
||||||
|
|
||||||
@@ -325,13 +315,16 @@ void QbsGroupNode::setGroup(QbsBaseProjectNode *root, const qbs::GroupData *grou
|
|||||||
|
|
||||||
FileTreeNode::reorder(tree, productPath, tree);
|
FileTreeNode::reorder(tree, productPath, tree);
|
||||||
FileTreeNode::simplify(tree);
|
FileTreeNode::simplify(tree);
|
||||||
setupFolders(root, root, tree, productPath, keepers);
|
setupFolders(this, tree, productPath, QList<ProjectExplorer::Node *>() << indexFile);
|
||||||
|
|
||||||
delete tree;
|
delete tree;
|
||||||
|
|
||||||
|
m_group = group;
|
||||||
|
emitNodeUpdated();
|
||||||
}
|
}
|
||||||
|
|
||||||
void QbsGroupNode::setupFolders(QbsBaseProjectNode *topLevel, ProjectExplorer::FolderNode *root,
|
void QbsGroupNode::setupFolders(ProjectExplorer::FolderNode *root, FileTreeNode *node,
|
||||||
FileTreeNode *node, const QString &baseDirPath,
|
const QString &baseDirPath, QList<ProjectExplorer::Node *> keepers)
|
||||||
QList<ProjectExplorer::Node *> keepers)
|
|
||||||
{
|
{
|
||||||
QList<ProjectExplorer::FileNode *> filesToRemove;
|
QList<ProjectExplorer::FileNode *> filesToRemove;
|
||||||
foreach (ProjectExplorer::FileNode *fn, root->fileNodes()) {
|
foreach (ProjectExplorer::FileNode *fn, root->fileNodes()) {
|
||||||
@@ -367,7 +360,7 @@ void QbsGroupNode::setupFolders(QbsBaseProjectNode *topLevel, ProjectExplorer::F
|
|||||||
|
|
||||||
ProjectExplorer::FolderNode *fn = root->findSubFolder(path);
|
ProjectExplorer::FolderNode *fn = root->findSubFolder(path);
|
||||||
if (path == baseDirPath) {
|
if (path == baseDirPath) {
|
||||||
setupFolders(topLevel, root, c, c->path(), foldersToKeep);
|
setupFolders(root, c, c->path(), foldersToKeep);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -379,14 +372,14 @@ void QbsGroupNode::setupFolders(QbsBaseProjectNode *topLevel, ProjectExplorer::F
|
|||||||
foldersToRemove.removeOne(fn);
|
foldersToRemove.removeOne(fn);
|
||||||
} else {
|
} else {
|
||||||
fn = new ProjectExplorer::FolderNode(path);
|
fn = new ProjectExplorer::FolderNode(path);
|
||||||
topLevel->addFolderNodes(QList<ProjectExplorer::FolderNode *>() << fn, root);
|
addFolderNodes(QList<ProjectExplorer::FolderNode *>() << fn, root);
|
||||||
}
|
}
|
||||||
foldersToKeep.append(fn);
|
foldersToKeep.append(fn);
|
||||||
setupFolders(topLevel, fn, c, c->path());
|
setupFolders(fn, c, c->path());
|
||||||
}
|
}
|
||||||
topLevel->removeFileNodes(filesToRemove, root);
|
addFileNodes(filesToAdd, root);
|
||||||
topLevel->removeFolderNodes(foldersToRemove, root);
|
removeFileNodes(filesToRemove, root);
|
||||||
topLevel->addFileNodes(filesToAdd, 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
|
// Set Product file node used to jump to the product
|
||||||
QList<ProjectExplorer::FileNode *> files = fileNodes();
|
QList<ProjectExplorer::FileNode *> files = fileNodes();
|
||||||
QList<ProjectExplorer::Node *> toKeep;
|
|
||||||
if (files.isEmpty()) {
|
if (files.isEmpty()) {
|
||||||
QbsFileNode *idx = new QbsFileNode(prd->location().fileName,
|
addFileNodes(QList<ProjectExplorer::FileNode *>()
|
||||||
ProjectExplorer::ProjectFileType, false,
|
<< new QbsFileNode(prd->location().fileName,
|
||||||
prd->location().line);
|
ProjectExplorer::ProjectFileType, false,
|
||||||
addFileNodes(QList<ProjectExplorer::FileNode *>() << idx, this);
|
prd->location().line),
|
||||||
toKeep.append(idx);
|
this);
|
||||||
} else {
|
} else {
|
||||||
QbsFileNode *idx = static_cast<QbsFileNode *>(files.at(0));
|
QbsFileNode *qbsFile = static_cast<QbsFileNode *>(files.at(0));
|
||||||
idx->setPath(prd->location().fileName);
|
qbsFile->setPath(prd->location().fileName);
|
||||||
idx->setLine(prd->location().line);
|
qbsFile->setLine(prd->location().line);
|
||||||
toKeep.append(idx);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QList<ProjectExplorer::ProjectNode *> toAdd;
|
QList<ProjectExplorer::ProjectNode *> toAdd;
|
||||||
QList<ProjectExplorer::ProjectNode *> toRemove = subProjectNodes();
|
QList<ProjectExplorer::ProjectNode *> toRemove = subProjectNodes();
|
||||||
|
|
||||||
foreach (const qbs::GroupData &grp, prd->groups()) {
|
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());
|
QbsGroupNode *qn = findGroupNode(grp.name());
|
||||||
if (qn) {
|
if (qn) {
|
||||||
toRemove.removeAll(qn);
|
toRemove.removeAll(qn);
|
||||||
toKeep.append(qn);
|
|
||||||
qn->setGroup(&grp, productPath);
|
qn->setGroup(&grp, productPath);
|
||||||
} else {
|
} else {
|
||||||
qn = new QbsGroupNode(&grp, productPath);
|
toAdd << new QbsGroupNode(&grp, productPath);
|
||||||
toAdd.append(qn);
|
|
||||||
toKeep.append(qn);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -68,8 +68,6 @@ private:
|
|||||||
|
|
||||||
class QbsGroupNode;
|
class QbsGroupNode;
|
||||||
|
|
||||||
class QbsGroupNode;
|
|
||||||
|
|
||||||
class QbsBaseProjectNode : public ProjectExplorer::ProjectNode
|
class QbsBaseProjectNode : public ProjectExplorer::ProjectNode
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
@@ -100,9 +98,6 @@ public:
|
|||||||
const QString &newFilePath);
|
const QString &newFilePath);
|
||||||
|
|
||||||
QList<ProjectExplorer::RunConfiguration *> runConfigurationsFor(Node *node);
|
QList<ProjectExplorer::RunConfiguration *> runConfigurationsFor(Node *node);
|
||||||
|
|
||||||
private:
|
|
||||||
friend class QbsGroupNode;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// --------------------------------------------------------------------
|
// --------------------------------------------------------------------
|
||||||
@@ -122,13 +117,10 @@ public:
|
|||||||
|
|
||||||
QString productPath() const;
|
QString productPath() const;
|
||||||
|
|
||||||
static void setGroup(QbsBaseProjectNode *root, const qbs::GroupData *group,
|
|
||||||
const QString &productPath, QList<Node *> keepers);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
static void setupFolders(QbsBaseProjectNode *topLevel, FolderNode *root, FileTreeNode *node,
|
void setupFolders(ProjectExplorer::FolderNode *root, FileTreeNode *node,
|
||||||
const QString &baseDirPath,
|
const QString &baseDirPath,
|
||||||
QList<ProjectExplorer::Node *> keepers = QList<ProjectExplorer::Node *>());
|
QList<ProjectExplorer::Node *> keepers = QList<ProjectExplorer::Node *>());
|
||||||
|
|
||||||
const qbs::GroupData *m_group;
|
const qbs::GroupData *m_group;
|
||||||
QString m_productPath;
|
QString m_productPath;
|
||||||
|
Reference in New Issue
Block a user