From 3fce8cfc4f9bd4c930b86384bcced8a1806f70db Mon Sep 17 00:00:00 2001
From: Christian Kandeler <christian.kandeler@theqtcompany.com>
Date: Wed, 15 Apr 2015 15:04:55 +0200
Subject: [PATCH] QbsProjectManager: Don't offer "Add File" functionality for
 folders.

It does not make sense to add files to anything besides products and
groups.

Task-number: QTCREATORBUG-14286
Change-Id: Iced8cefc4eff3857e9a1a6d3a3a9311dcbb44f11
Reviewed-by: Joerg Bornemann <joerg.bornemann@theqtcompany.com>
---
 src/plugins/qbsprojectmanager/qbsnodes.cpp | 19 ++++++++++++++++---
 src/plugins/qbsprojectmanager/qbsnodes.h   | 10 ++++++++++
 2 files changed, 26 insertions(+), 3 deletions(-)

diff --git a/src/plugins/qbsprojectmanager/qbsnodes.cpp b/src/plugins/qbsprojectmanager/qbsnodes.cpp
index 8e1f783806b..8b6defe2f07 100644
--- a/src/plugins/qbsprojectmanager/qbsnodes.cpp
+++ b/src/plugins/qbsprojectmanager/qbsnodes.cpp
@@ -264,6 +264,19 @@ QString QbsFileNode::displayName() const
     return ProjectExplorer::FileNode::displayName() + QLatin1Char(':') + QString::number(l);
 }
 
+
+QbsFolderNode::QbsFolderNode(const Utils::FileName &folderPath, ProjectExplorer::NodeType nodeType,
+                             const QString &displayName)
+    : ProjectExplorer::FolderNode(folderPath, nodeType, displayName)
+{
+}
+
+QList<ProjectExplorer::ProjectAction> QbsFolderNode::supportedActions(ProjectExplorer::Node *node) const
+{
+    Q_UNUSED(node);
+    return QList<ProjectExplorer::ProjectAction>();
+}
+
 // ---------------------------------------------------------------------------
 // QbsBaseProjectNode:
 // ---------------------------------------------------------------------------
@@ -547,9 +560,9 @@ void QbsGroupNode::setupFolder(ProjectExplorer::FolderNode *root, const qbs::Gro
                 break;
             }
             if (!fn) {
-                fn = new FolderNode(Utils::FileName::fromString(c->path()),
-                                    ProjectExplorer::FolderNodeType,
-                                    displayNameFromPath(c->path(), baseDir));
+                fn = new QbsFolderNode(Utils::FileName::fromString(c->path()),
+                                       ProjectExplorer::FolderNodeType,
+                                       displayNameFromPath(c->path(), baseDir));
                 root->addFolderNodes(QList<FolderNode *>() << fn);
             } else {
                 foldersToRemove.removeOne(fn);
diff --git a/src/plugins/qbsprojectmanager/qbsnodes.h b/src/plugins/qbsprojectmanager/qbsnodes.h
index fe30597800d..ef10ae2a603 100644
--- a/src/plugins/qbsprojectmanager/qbsnodes.h
+++ b/src/plugins/qbsprojectmanager/qbsnodes.h
@@ -57,6 +57,16 @@ public:
     QString displayName() const;
 };
 
+class QbsFolderNode : public ProjectExplorer::FolderNode
+{
+public:
+    QbsFolderNode(const Utils::FileName &folderPath, ProjectExplorer::NodeType nodeType,
+                  const QString &displayName);
+
+private:
+    QList<ProjectExplorer::ProjectAction> supportedActions(ProjectExplorer::Node *node) const;
+};
+
 // ---------------------------------------------------------------------------
 // QbsBaseProjectNode:
 // ---------------------------------------------------------------------------
-- 
GitLab