From e27f43cbecc0b3b5ced78847cfc0b7a6b6bbccec Mon Sep 17 00:00:00 2001
From: Matthias Puchner <github@mpuchner.de>
Date: Thu, 2 Dec 2021 08:10:21 +0100
Subject: [PATCH] do not expose SessionItem as linked item

---
 GUI/Model/Fit/FitParameterHelper.cpp     |  4 ++--
 GUI/Model/Fit/ParameterTreeItems.cpp     | 12 +++++++++++-
 GUI/Model/Fit/ParameterTreeItems.h       |  5 ++++-
 GUI/View/Fit/ParameterTuningDelegate.cpp |  4 ++--
 4 files changed, 19 insertions(+), 6 deletions(-)

diff --git a/GUI/Model/Fit/FitParameterHelper.cpp b/GUI/Model/Fit/FitParameterHelper.cpp
index 1331f795662..bf4f96e5ae7 100644
--- a/GUI/Model/Fit/FitParameterHelper.cpp
+++ b/GUI/Model/Fit/FitParameterHelper.cpp
@@ -13,8 +13,8 @@
 //  ************************************************************************************************
 
 #include "GUI/Model/Fit/FitParameterHelper.h"
-#include "GUI/Model/Fit/FitParameterItem.h"
 #include "GUI/Model/Fit/FitParameterContainerItem.h"
+#include "GUI/Model/Fit/FitParameterItem.h"
 #include "GUI/Model/Fit/FitParameterLinkItem.h"
 #include "GUI/Model/Fit/ParameterTreeItems.h"
 #include "GUI/Model/Job/JobItem.h"
@@ -39,7 +39,7 @@ void FitParameterHelper::createFitParameter(FitParameterContainerItem* container
     fitPar->setStartValue(parameterItem->value().toDouble());
     link->setLink(getParameterItemPath(parameterItem));
 
-    fitPar->initMinMaxValues(parameterItem->linkedItem()->limits());
+    fitPar->initMinMaxValues(parameterItem->limitsOfLink());
 }
 
 //! Removes link to given parameterItem from fit parameters
diff --git a/GUI/Model/Fit/ParameterTreeItems.cpp b/GUI/Model/Fit/ParameterTreeItems.cpp
index 98dd051f848..f5e218f8a73 100644
--- a/GUI/Model/Fit/ParameterTreeItems.cpp
+++ b/GUI/Model/Fit/ParameterTreeItems.cpp
@@ -56,7 +56,7 @@ void ParameterItem::propagateValueToLink(double newValue)
 
 //! Returns corresponding linked item in MultiLayerItem/InstrumentItem
 
-SessionItem* ParameterItem::linkedItem()
+SessionItem* ParameterItem::linkedItem() const
 {
     const SessionItem* jobItem = GUI::Model::Path::ancestor(this, JobItem::M_TYPE);
     ASSERT(jobItem);
@@ -69,6 +69,16 @@ void ParameterItem::setLink(const QString& link)
     m_link = link;
 }
 
+RealLimits ParameterItem::limitsOfLink() const
+{
+    return linkedItem()->limits();
+}
+
+int ParameterItem::decimalsOfLink() const
+{
+    return linkedItem()->decimals();
+}
+
 QString ParameterItem::link() const
 {
     return m_link;
diff --git a/GUI/Model/Fit/ParameterTreeItems.h b/GUI/Model/Fit/ParameterTreeItems.h
index 78f8bf46a23..54eba628651 100644
--- a/GUI/Model/Fit/ParameterTreeItems.h
+++ b/GUI/Model/Fit/ParameterTreeItems.h
@@ -39,11 +39,14 @@ public:
     ParameterItem();
 
     void propagateValueToLink(double newValue);
-    SessionItem* linkedItem();
     void setLink(const QString& link);
     QString link() const;
 
+    RealLimits limitsOfLink() const;
+    int decimalsOfLink() const;
+
 private:
+    SessionItem* linkedItem() const;
     QString m_link; //!< Link to original PropertyItem
 };
 
diff --git a/GUI/View/Fit/ParameterTuningDelegate.cpp b/GUI/View/Fit/ParameterTuningDelegate.cpp
index cc3d3758fe5..16521fca7fe 100644
--- a/GUI/View/Fit/ParameterTuningDelegate.cpp
+++ b/GUI/View/Fit/ParameterTuningDelegate.cpp
@@ -147,7 +147,7 @@ QWidget* ParameterTuningDelegate::createEditor(QWidget* parent, const QStyleOpti
         return nullptr;
 
     double value = data.toDouble();
-    RealLimits limits = m_currentItem->linkedItem()->limits();
+    RealLimits limits = m_currentItem->limitsOfLink();
     m_tuning_info.setItemLimits(limits);
     m_tuning_info.value_to_slider(value);
 
@@ -155,7 +155,7 @@ QWidget* ParameterTuningDelegate::createEditor(QWidget* parent, const QStyleOpti
     m_valueBox = new ScientificSpinBox();
     m_valueBox->setKeyboardTracking(false);
     m_valueBox->setFixedWidth(105);
-    m_valueBox->setDecimals(m_currentItem->linkedItem()->decimals());
+    m_valueBox->setDecimals(m_currentItem->decimalsOfLink());
     m_valueBox->setSingleStep(m_tuning_info.step());
 
     if (limits.hasLowerLimit()) {
-- 
GitLab