From 848b8c0f447dbe388d2aca8eb40ba2ee3984ba5c Mon Sep 17 00:00:00 2001
From: Joerg Bornemann <joerg.bornemann@qt.io>
Date: Fri, 31 Mar 2017 11:32:39 +0200
Subject: [PATCH] Update qbs submodule

To HEAD of 1.8 branch, and adapt to changed API.

Change-Id: Ie180b114726134a06dfefe9dc3a6dc27997f246c
Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
---
 src/plugins/qbsprojectmanager/qbsnodes.cpp          |  8 +++++++-
 .../qbsprojectmanager/qbsnodetreebuilder.cpp        | 13 ++++++++++---
 src/plugins/qbsprojectmanager/qbsproject.cpp        | 10 +++++++++-
 src/shared/qbs                                      |  2 +-
 4 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/src/plugins/qbsprojectmanager/qbsnodes.cpp b/src/plugins/qbsprojectmanager/qbsnodes.cpp
index 730c63ef7f2..45c7dcf1113 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 1f2d1dc445b..46d68e707b6 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 5e1abd4c3a1..198a77ff019 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 28f803d359c..24000d556fe 160000
--- a/src/shared/qbs
+++ b/src/shared/qbs
@@ -1 +1 @@
-Subproject commit 28f803d359c5f3102514d7817478cb4927114102
+Subproject commit 24000d556fefdb3dcd4103d3d1679429434e6f58
-- 
GitLab