diff --git a/src/plugins/qbsprojectmanager/qbsnodes.cpp b/src/plugins/qbsprojectmanager/qbsnodes.cpp index 01bcf904b90..f85f812fe15 100644 --- a/src/plugins/qbsprojectmanager/qbsnodes.cpp +++ b/src/plugins/qbsprojectmanager/qbsnodes.cpp @@ -230,20 +230,12 @@ static bool supportsNodeAction(ProjectAction action, const Node *node) return false; } -// --------------------------------------------------------------------------- -// QbsBaseProjectNode: -// --------------------------------------------------------------------------- - -QbsBaseProjectNode::QbsBaseProjectNode(const Utils::FileName &path) : - ProjectExplorer::ProjectNode(path) -{ } - // -------------------------------------------------------------------- // QbsGroupNode: // -------------------------------------------------------------------- QbsGroupNode::QbsGroupNode(const qbs::GroupData &grp, const QString &productPath) : - QbsBaseProjectNode(Utils::FileName()) + ProjectNode(Utils::FileName()) { static QIcon groupIcon = QIcon(QString(Constants::QBS_GROUP_ICON)); setIcon(groupIcon); @@ -320,7 +312,7 @@ bool QbsGroupNode::renameFile(const QString &filePath, const QString &newFilePat FolderNode::AddNewInformation QbsGroupNode::addNewInformation(const QStringList &files, Node *context) const { - AddNewInformation info = QbsBaseProjectNode::addNewInformation(files, context); + AddNewInformation info = ProjectNode::addNewInformation(files, context); if (context != this) --info.priority; return info; @@ -331,7 +323,7 @@ FolderNode::AddNewInformation QbsGroupNode::addNewInformation(const QStringList // -------------------------------------------------------------------- QbsProductNode::QbsProductNode(const qbs::ProductData &prd) : - QbsBaseProjectNode(Utils::FileName::fromString(prd.location().filePath())), + ProjectNode(Utils::FileName::fromString(prd.location().filePath())), m_qbsProductData(prd) { static QIcon productIcon = Core::FileIconProvider::directoryIcon(Constants::QBS_PRODUCT_OVERLAY_ICON); @@ -417,7 +409,7 @@ QString QbsProductNode::buildKey() const // -------------------------------------------------------------------- QbsProjectNode::QbsProjectNode(const Utils::FileName &projectDirectory) : - QbsBaseProjectNode(projectDirectory) + ProjectNode(projectDirectory) { static QIcon projectIcon = Core::FileIconProvider::directoryIcon(ProjectExplorer::Constants::FILEOVERLAY_QT); setIcon(projectIcon); diff --git a/src/plugins/qbsprojectmanager/qbsnodes.h b/src/plugins/qbsprojectmanager/qbsnodes.h index f77008a1728..ab0ebb96583 100644 --- a/src/plugins/qbsprojectmanager/qbsnodes.h +++ b/src/plugins/qbsprojectmanager/qbsnodes.h @@ -35,23 +35,11 @@ namespace Internal { class QbsNodeTreeBuilder; class QbsProject; -// --------------------------------------------------------------------------- -// QbsBaseProjectNode: -// --------------------------------------------------------------------------- - -class QbsGroupNode; - -class QbsBaseProjectNode : public ProjectExplorer::ProjectNode -{ -public: - explicit QbsBaseProjectNode(const Utils::FileName &absoluteFilePath); -}; - // -------------------------------------------------------------------- // QbsGroupNode: // -------------------------------------------------------------------- -class QbsGroupNode : public QbsBaseProjectNode +class QbsGroupNode : public ProjectExplorer::ProjectNode { public: QbsGroupNode(const qbs::GroupData &grp, const QString &productPath); @@ -72,7 +60,7 @@ private: // QbsProductNode: // -------------------------------------------------------------------- -class QbsProductNode : public QbsBaseProjectNode +class QbsProductNode : public ProjectExplorer::ProjectNode { public: explicit QbsProductNode(const qbs::ProductData &prd); @@ -96,7 +84,7 @@ private: // QbsProjectNode: // --------------------------------------------------------------------------- -class QbsProjectNode : public QbsBaseProjectNode +class QbsProjectNode : public ProjectExplorer::ProjectNode { public: explicit QbsProjectNode(const Utils::FileName &projectDirectory); diff --git a/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp b/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp index 3cb1d45a85e..5e44ee7b591 100644 --- a/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp +++ b/src/plugins/qbsprojectmanager/qbsprojectmanagerplugin.cpp @@ -321,9 +321,11 @@ void QbsProjectManagerPlugin::updateBuildActions() if (Node *editorNode = currentEditorNode()) { fileName = editorNode->filePath().fileName(); + ProjectNode *parentProjectNode = editorNode->parentProjectNode(); + // FIXME: This code is wrong: If the file is in a Group, then productNode will be // null and the action will be disabled. We have to walk up the tree. - auto productNode = dynamic_cast(editorNode->parentProjectNode()); + auto productNode = dynamic_cast(parentProjectNode); if (productNode) { productVisible = true; productName = productNode->displayName(); @@ -331,7 +333,9 @@ void QbsProjectManagerPlugin::updateBuildActions() if (QbsProject *editorProject = currentEditorProject()) { enabled = !BuildManager::isBuilding(editorProject) && !editorProject->isParsing(); - fileVisible = dynamic_cast(editorNode->parentProjectNode()); + fileVisible = productNode + || dynamic_cast(parentProjectNode) + || dynamic_cast(parentProjectNode); } }