From 778504e9e5e53eaa5a28f930d2274993c97569f3 Mon Sep 17 00:00:00 2001
From: "Joachim Wuttke (o)" <j.wuttke@fz-juelich.de>
Date: Mon, 26 Feb 2024 14:58:04 +0100
Subject: [PATCH] SampleEditor controller: map -> unique_ptr

---
 GUI/View/Sample/SampleEditor.cpp | 10 ++--------
 GUI/View/Sample/SampleEditor.h   |  4 ++--
 2 files changed, 4 insertions(+), 10 deletions(-)

diff --git a/GUI/View/Sample/SampleEditor.cpp b/GUI/View/Sample/SampleEditor.cpp
index c4a9aedcf44..0eb7c02c7bf 100644
--- a/GUI/View/Sample/SampleEditor.cpp
+++ b/GUI/View/Sample/SampleEditor.cpp
@@ -33,16 +33,11 @@ SampleEditor::SampleEditor()
 
 SampleEditor::~SampleEditor()
 {
-    qDeleteAll(m_edit_controllers.values());
 }
 
 void SampleEditor::setCurrentSample(SampleItem* sampleItem)
 {
-    if (m_current_sample != nullptr)
-        m_edit_controllers[m_current_sample]->setSampleForm(nullptr);
-
     m_current_sample_widget = nullptr;
-    delete QScrollArea::takeWidget();
 
     m_current_sample = sampleItem;
     if (m_current_sample == nullptr) {
@@ -50,9 +45,8 @@ void SampleEditor::setCurrentSample(SampleItem* sampleItem)
         return;
     }
 
-    if (!m_edit_controllers.contains(m_current_sample))
-        m_edit_controllers.insert(m_current_sample, new SampleEditorController(m_current_sample));
-    auto* ec = m_edit_controllers[m_current_sample];
+    m_edit_controller = std::make_unique<SampleEditorController>(m_current_sample);
+    auto* ec = m_edit_controller.get();
     connect(ec, &SampleEditorController::requestViewInRealspace, this,
             &SampleEditor::requestViewInRealspace);
     connect(ec, &SampleEditorController::aboutToRemoveItem, this, &SampleEditor::aboutToRemoveItem);
diff --git a/GUI/View/Sample/SampleEditor.h b/GUI/View/Sample/SampleEditor.h
index ab970543384..4cad7280da9 100644
--- a/GUI/View/Sample/SampleEditor.h
+++ b/GUI/View/Sample/SampleEditor.h
@@ -15,8 +15,8 @@
 #ifndef BORNAGAIN_GUI_VIEW_SAMPLE_SAMPLEEDITOR_H
 #define BORNAGAIN_GUI_VIEW_SAMPLE_SAMPLEEDITOR_H
 
-#include <QMap>
 #include <QScrollArea>
+#include <memory>
 
 class Item3D;
 class SampleEditorController;
@@ -40,7 +40,7 @@ signals:
 private:
     SampleForm* m_current_sample_widget;
     SampleItem* m_current_sample = nullptr;
-    QMap<SampleItem*, SampleEditorController*> m_edit_controllers;
+    std::unique_ptr<SampleEditorController> m_edit_controller;
 };
 
 
-- 
GitLab