summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@digia.com>2013-05-28 18:28:51 +0200
committerEike Ziller <eike.ziller@digia.com>2013-05-28 18:28:51 +0200
commitcbfcf88f7e5a542f81f9caf11090206da6adac1c (patch)
treea644bdef22672db691606f9d809e59649b58ab11
parent8d894aee02745a8f64c59feb0e427fb6c92135bb (diff)
parentff0a5e81e215eb8091a8a915212ebb34e9f09560 (diff)
downloadqt-creator-cbfcf88f7e5a542f81f9caf11090206da6adac1c.tar.gz
Merge branch '2.8' of ssh://codereview.qt-project.org/qt-creator/qt-creator into 2.8
-rw-r--r--src/plugins/qbsprojectmanager/qbsnodes.cpp25
-rw-r--r--src/plugins/qt4projectmanager/qt4projectmanagerplugin.cpp1
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);