diff options
author | Eike Ziller <eike.ziller@digia.com> | 2013-05-28 18:28:51 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@digia.com> | 2013-05-28 18:28:51 +0200 |
commit | cbfcf88f7e5a542f81f9caf11090206da6adac1c (patch) | |
tree | a644bdef22672db691606f9d809e59649b58ab11 /src | |
parent | 8d894aee02745a8f64c59feb0e427fb6c92135bb (diff) | |
parent | ff0a5e81e215eb8091a8a915212ebb34e9f09560 (diff) | |
download | qt-creator-cbfcf88f7e5a542f81f9caf11090206da6adac1c.tar.gz |
Merge branch '2.8' of ssh://codereview.qt-project.org/qt-creator/qt-creator into 2.8
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/qbsprojectmanager/qbsnodes.cpp | 25 | ||||
-rw-r--r-- | src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp | 1 |
2 files changed, 17 insertions, 9 deletions
diff --git a/src/plugins/qbsprojectmanager/qbsnodes.cpp b/src/plugins/qbsprojectmanager/qbsnodes.cpp index 48ae6c6041..0fca740baa 100644 --- a/src/plugins/qbsprojectmanager/qbsnodes.cpp +++ b/src/plugins/qbsprojectmanager/qbsnodes.cpp @@ -89,8 +89,8 @@ QIcon QbsGroupNode::m_groupIcon = generateIcon(); class FileTreeNode { public: - explicit FileTreeNode(const QString &n = QString(), FileTreeNode *p = 0) : - parent(p), name(n) + explicit FileTreeNode(const QString &n = QString(), FileTreeNode *p = 0, bool f = false) : + parent(p), name(n), m_isFile(f) { if (p) p->children.append(this); @@ -101,16 +101,16 @@ public: qDeleteAll(children); } - FileTreeNode *addPart(const QString &n) + FileTreeNode *addPart(const QString &n, bool isFile) { foreach (FileTreeNode *c, children) { if (c->name == n) return c; } - return new FileTreeNode(n, this); + return new FileTreeNode(n, this, isFile); } - bool isFile() { return children.isEmpty(); } + bool isFile() { return m_isFile; } static FileTreeNode *moveChildrenUp(FileTreeNode *node) { @@ -145,6 +145,10 @@ public: static void reorder(FileTreeNode *node, const QString &basedir) { QTC_CHECK(!basedir.isEmpty()); + QString prefix = basedir; + if (basedir.startsWith(QLatin1Char('/'))) + prefix = basedir.mid(1); + prefix.append(QLatin1Char('/')); if (node->path() == basedir) { // Find root node: @@ -154,7 +158,7 @@ public: foreach (FileTreeNode *c, node->children) { // Update children names by prepending basedir - c->name = basedir + QLatin1Char('/') + c->name; + c->name = prefix + c->name; // Update parent information: c->parent = root; @@ -182,7 +186,7 @@ public: if (!node->parent) return; - if (node->children.count() == 0 && !node->isFile()) { + if (node->children.isEmpty() && !node->isFile()) { // Clean up empty folder nodes: node->parent->children.removeOne(node); node->parent = 0; @@ -208,6 +212,7 @@ public: QList<FileTreeNode *> children; FileTreeNode *parent; QString name; + bool m_isFile; }; // ---------------------------------------------------------------------- @@ -362,8 +367,10 @@ void QbsGroupNode::setupFiles(QbsBaseProjectNode *root, const QStringList &files QStringList pathSegments = path.split(QLatin1Char('/'), QString::SkipEmptyParts); FileTreeNode *root = &tree; - while (!pathSegments.isEmpty()) - root = root->addPart(pathSegments.takeFirst()); + while (!pathSegments.isEmpty()) { + bool isFile = pathSegments.count() == 1; + root = root->addPart(pathSegments.takeFirst(), isFile); + } } FileTreeNode::reorder(&tree, productPath); diff --git a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp index 7561fb297f..d0c4930761 100644 --- a/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp +++ b/src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp @@ -423,6 +423,7 @@ void Qt4ProjectManagerPlugin::updateBuildFileAction() ProjectExplorer::Project *project = session->projectForFile(file); m_buildFileAction->setParameter(QFileInfo(file).fileName()); visible = qobject_cast<Qt4Project *>(project) + && node && qobject_cast<Qt4ProFileNode *>(node->projectNode()); enabled = !m_projectExplorer->buildManager()->isBuilding(project); |