diff --git a/src/plugins/qbsprojectmanager/qbsnodes.cpp b/src/plugins/qbsprojectmanager/qbsnodes.cpp index 730c63ef7f2346a49232e2a291bbe7a7dcce93fa..45c7dcf11137712d1eb452ecf01db9173bb67d4b 100644 --- a/src/plugins/qbsprojectmanager/qbsnodes.cpp +++ b/src/plugins/qbsprojectmanager/qbsnodes.cpp @@ -232,8 +232,14 @@ static QList<ProjectExplorer::ProjectAction> supportedNodeActions(ProjectExplore return actions; if (managesFiles) actions << ProjectExplorer::AddNewFile << ProjectExplorer::AddExistingFile; + + auto equalsNodeFilePath = [node](const QString &str) + { + return str == node->filePath().toString(); + }; + if (node->nodeType() == ProjectExplorer::NodeType::File - && !project->qbsProject().buildSystemFiles().contains(node->filePath().toString())) { + && !Utils::contains(project->qbsProject().buildSystemFiles(), equalsNodeFilePath)) { actions << ProjectExplorer::RemoveFile << ProjectExplorer::Rename; } return actions; diff --git a/src/plugins/qbsprojectmanager/qbsnodetreebuilder.cpp b/src/plugins/qbsprojectmanager/qbsnodetreebuilder.cpp index 1f2d1dc445ba099150cfa2ee04fdb82640d9708d..46d68e707b643e715649bd8d192bcb2526edf5e1 100644 --- a/src/plugins/qbsprojectmanager/qbsnodetreebuilder.cpp +++ b/src/plugins/qbsprojectmanager/qbsnodetreebuilder.cpp @@ -169,9 +169,16 @@ QSet<QString> referencedBuildSystemFiles(const qbs::ProjectData &data) QStringList unreferencedBuildSystemFiles(const qbs::Project &p) { - return p.isValid() - ? p.buildSystemFiles().subtract(referencedBuildSystemFiles(p.projectData())).toList() - : QStringList(); + QStringList result; + if (!p.isValid()) + return result; + + const std::set<QString> &available = p.buildSystemFiles(); + const QSet<QString> &referenced = referencedBuildSystemFiles(p.projectData()); + std::set_difference(available.begin(), available.end(), referenced.begin(), referenced.end(), + std::back_inserter(result)); + + return result; } } // namespace diff --git a/src/plugins/qbsprojectmanager/qbsproject.cpp b/src/plugins/qbsprojectmanager/qbsproject.cpp index 5e1abd4c3a1817d1e211990f5aabec84f80ebc3f..198a77ff01927f8f407778ab926150c64df185a6 100644 --- a/src/plugins/qbsprojectmanager/qbsproject.cpp +++ b/src/plugins/qbsprojectmanager/qbsproject.cpp @@ -411,12 +411,20 @@ bool QbsProject::checkCancelStatus() return true; } +static QSet<QString> toQStringSet(const std::set<QString> &src) +{ + QSet<QString> result; + result.reserve(src.size()); + std::copy(src.begin(), src.end(), Utils::inserter(result)); + return result; +} + void QbsProject::updateAfterParse() { qCDebug(qbsPmLog) << "Updating data after parse"; OpTimer opTimer("updateAfterParse"); updateProjectNodes(); - updateDocuments(m_qbsProject.buildSystemFiles()); + updateDocuments(toQStringSet(m_qbsProject.buildSystemFiles())); updateBuildTargetData(); updateCppCodeModel(); updateQmlJsCodeModel(); diff --git a/src/shared/qbs b/src/shared/qbs index 28f803d359c5f3102514d7817478cb4927114102..24000d556fefdb3dcd4103d3d1679429434e6f58 160000 --- a/src/shared/qbs +++ b/src/shared/qbs @@ -1 +1 @@ -Subproject commit 28f803d359c5f3102514d7817478cb4927114102 +Subproject commit 24000d556fefdb3dcd4103d3d1679429434e6f58