From b83cf0a598308cdef257b775143b48b896e4f5e6 Mon Sep 17 00:00:00 2001
From: Dmitry Yurov <d.yurov@fz-juelich.de>
Date: Thu, 6 Dec 2018 11:15:46 +0100
Subject: [PATCH] Fix unlink/relink on instrument change

---
 .../LinkInstrumentManager.cpp                 | 20 +++++--------------
 .../ImportDataWidgets/LinkInstrumentManager.h |  3 +--
 2 files changed, 6 insertions(+), 17 deletions(-)

diff --git a/GUI/coregui/Views/ImportDataWidgets/LinkInstrumentManager.cpp b/GUI/coregui/Views/ImportDataWidgets/LinkInstrumentManager.cpp
index 595e7ea97be..9bbbfe81074 100644
--- a/GUI/coregui/Views/ImportDataWidgets/LinkInstrumentManager.cpp
+++ b/GUI/coregui/Views/ImportDataWidgets/LinkInstrumentManager.cpp
@@ -155,11 +155,7 @@ void LinkInstrumentManager::onInstrumentChildChange(InstrumentItem* instrument,
     if (child == nullptr)
         return;
 
-    if (child->itemName() == BasicAxisItem::P_NBINS
-        || child->parent()->modelType() == Constants::GroupItemType)
-        onInstrumentBinningChange(instrument);
-    else
-        onInstrumentLayoutChange(instrument);
+    onInstrumentLayoutChange(instrument);
 }
 
 //! Updates map of instruments on insert/remove InstrumentItem event.
@@ -248,22 +244,16 @@ void LinkInstrumentManager::updateRealDataMap()
     }
 }
 
-//! Runs through all RealDataItem and break the link, if instrument binning doesn't match the data.
-
-void LinkInstrumentManager::onInstrumentBinningChange(InstrumentItem* changedInstrument)
-{
-    for(auto realDataItem : linkedItems(changedInstrument))
-        if (!changedInstrument->alignedWith(realDataItem))
-            realDataItem->setItemValue(RealDataItem::P_INSTRUMENT_ID, QString());
-}
-
 //! Runs through all RealDataItem and refresh linking to match possible change in detector
 //! axes definition.
 
 void LinkInstrumentManager::onInstrumentLayoutChange(InstrumentItem* changedInstrument)
 {
     for (auto realDataItem : linkedItems(changedInstrument))
-        realDataItem->linkToInstrument(changedInstrument);
+        if (!changedInstrument->alignedWith(realDataItem))
+            realDataItem->setItemValue(RealDataItem::P_INSTRUMENT_ID, QString());
+        else
+            realDataItem->linkToInstrument(changedInstrument);
 }
 
 //! Returns list of RealDataItem's linked to given instrument.
diff --git a/GUI/coregui/Views/ImportDataWidgets/LinkInstrumentManager.h b/GUI/coregui/Views/ImportDataWidgets/LinkInstrumentManager.h
index 1a5f5c5369c..0ab1b5ef364 100644
--- a/GUI/coregui/Views/ImportDataWidgets/LinkInstrumentManager.h
+++ b/GUI/coregui/Views/ImportDataWidgets/LinkInstrumentManager.h
@@ -46,7 +46,7 @@ public:
         InstrumentItem* m_instrument;
     };
 
-    explicit LinkInstrumentManager(QObject* parent = 0);
+    explicit LinkInstrumentManager(QObject* parent = nullptr);
 
     void setModels(InstrumentModel* instrumentModel, RealDataModel* realDataModel);
 
@@ -71,7 +71,6 @@ private slots:
     void updateLinks();
     void updateInstrumentMap();
     void updateRealDataMap();
-    void onInstrumentBinningChange(InstrumentItem* changedInstrument);
     void onInstrumentLayoutChange(InstrumentItem* changedInstrument);
 
 private:
-- 
GitLab