From 0dd8beba6f0057d066e97687b041b03adf8644ad Mon Sep 17 00:00:00 2001
From: Joachim Wuttke <j.wuttke@fz-juelich.de>
Date: Tue, 31 Oct 2023 14:12:06 +0100
Subject: [PATCH] repair sample layer view

---
 GUI/View/SampleDesigner/SampleEditor.cpp |  2 +-
 GUI/View/SampleDesigner/SampleEditor.h   |  1 -
 GUI/View/SampleDesigner/SampleForm.cpp   | 33 +++++++++++++-----------
 GUI/View/SampleDesigner/SampleForm.h     | 11 ++++----
 4 files changed, 25 insertions(+), 22 deletions(-)

diff --git a/GUI/View/SampleDesigner/SampleEditor.cpp b/GUI/View/SampleDesigner/SampleEditor.cpp
index 2b1a323f2af..71c05935465 100644
--- a/GUI/View/SampleDesigner/SampleEditor.cpp
+++ b/GUI/View/SampleDesigner/SampleEditor.cpp
@@ -65,7 +65,7 @@ void SampleEditor::setCurrentSample(SampleItem* sampleItem)
 
     createLayerColors();
 
-    m_currentSampleWidget = new SampleForm(this, m_currentSample, ec);
+    m_currentSampleWidget = new SampleForm(m_currentSample, ec);
     ec->setSampleForm(m_currentSampleWidget);
     m_currentSampleWidget->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);
     QScrollArea::setWidget(m_currentSampleWidget);
diff --git a/GUI/View/SampleDesigner/SampleEditor.h b/GUI/View/SampleDesigner/SampleEditor.h
index afc9dab54a4..f4b4e80eed8 100644
--- a/GUI/View/SampleDesigner/SampleEditor.h
+++ b/GUI/View/SampleDesigner/SampleEditor.h
@@ -20,7 +20,6 @@
 
 class Item3D;
 class ProjectDocument;
-class QScrollArea;
 class SampleEditorController;
 class SampleForm;
 class SampleItem;
diff --git a/GUI/View/SampleDesigner/SampleForm.cpp b/GUI/View/SampleDesigner/SampleForm.cpp
index 84ac9537479..a0f4758853e 100644
--- a/GUI/View/SampleDesigner/SampleForm.cpp
+++ b/GUI/View/SampleDesigner/SampleForm.cpp
@@ -56,26 +56,29 @@ public:
 } // namespace
 
 
-SampleForm::SampleForm(QWidget* parent, SampleItem* sampleItem, SampleEditorController* ec)
-    : CollapsibleGroupBox("Summary and layer-independent parameters", parent,
-                          sampleItem->expandInfo)
-    , m_sampleItem(sampleItem)
+SampleForm::SampleForm(SampleItem* sampleItem, SampleEditorController* ec)
+    : m_sampleItem(sampleItem)
     , m_ec(ec)
 {
-    setObjectName("MultiLayerForm"); // important for style sheet addressing
     setAttribute(Qt::WA_StyledBackground, true);
 
-    m_layout = new HeinzFormLayout(ec);
-    body()->setLayout(m_layout);
+    m_layout = new QVBoxLayout(this);
+
+    auto* summary = new CollapsibleGroupBox("Summary and layer-independent parameters", this,
+                                            sampleItem->expandInfo);
+    m_layout->addWidget(summary);
+
+    auto* gLayout = new HeinzFormLayout(ec);
+    summary->body()->setLayout(gLayout);
 
     auto* nameEdit = new QLineEdit;
-    m_layout->addRow("Name:", nameEdit);
+    gLayout->addRow("Name:", nameEdit);
     nameEdit->setText(sampleItem->sampleName());
     nameEdit->setFixedWidth(585);
     connect(nameEdit, &QLineEdit::textEdited, ec, &SampleEditorController::setSampleName);
 
     auto* descriptionEdit = new QTextEdit;
-    m_layout->addRow("Description:", descriptionEdit);
+    gLayout->addRow("Description:", descriptionEdit);
     descriptionEdit->setFixedWidth(585);
     descriptionEdit->setFixedHeight(60);
     descriptionEdit->setAcceptRichText(false);
@@ -85,7 +88,7 @@ SampleForm::SampleForm(QWidget* parent, SampleItem* sampleItem, SampleEditorCont
         m_ec->setSampleDescription(descriptionEdit->toPlainText());
     });
 
-    m_layout->addValue(sampleItem->crossCorrLength());
+    gLayout->addValue(sampleItem->crossCorrLength());
 
     // Processing external field is not implemented yet, so temporary disable it (see issue #654)
     // m_layout->addVector(sampleItem->externalField(), false);
@@ -93,7 +96,7 @@ SampleForm::SampleForm(QWidget* parent, SampleItem* sampleItem, SampleEditorCont
     auto* showInRealspaceAction = ActionFactory::createShowInRealspaceAction(
         this, "sample", [this] { m_ec->requestViewInRealspace(m_sampleItem); });
 
-    addTitleAction(showInRealspaceAction);
+    summary->addTitleAction(showInRealspaceAction);
 
     for (auto* layer : sampleItem->layerItems()) {
         m_layout->addWidget(new AddLayerWidget(this, layer, m_ec));
@@ -109,10 +112,10 @@ void SampleForm::onLayerAdded(LayerItem* layerItem)
 
     const int rowInLayout = rowInMultiLayer * 2 + 1;
 
-    m_layout->insertRow(rowInLayout, new LayerForm(this, layerItem, m_ec));
+    m_layout->insertWidget(rowInLayout, new LayerForm(this, layerItem, m_ec));
 
     // same row => button is above!
-    m_layout->insertRow(rowInLayout, new AddLayerWidget(this, layerItem, m_ec));
+    m_layout->insertWidget(rowInLayout, new AddLayerWidget(this, layerItem, m_ec));
 }
 
 void SampleForm::onLayerMoved(LayerItem* layerItem)
@@ -140,10 +143,10 @@ void SampleForm::onLayerMoved(LayerItem* layerItem)
     const int rowInMultiLayer = m_sampleItem->layerItems().indexOf(layerItem);
     const int rowInLayout = rowInMultiLayer * 2 + 1;
 
-    m_layout->insertRow(rowInLayout, wl);
+    m_layout->insertWidget(rowInLayout, wl);
 
     // same row => button is above!
-    m_layout->insertRow(rowInLayout, al);
+    m_layout->insertWidget(rowInLayout, al);
 }
 
 void SampleForm::onAboutToRemoveLayer(LayerItem* layerItem)
diff --git a/GUI/View/SampleDesigner/SampleForm.h b/GUI/View/SampleDesigner/SampleForm.h
index bcacb3de8d6..b9754c559e0 100644
--- a/GUI/View/SampleDesigner/SampleForm.h
+++ b/GUI/View/SampleDesigner/SampleForm.h
@@ -15,20 +15,21 @@
 #ifndef BORNAGAIN_GUI_VIEW_SAMPLEDESIGNER_SAMPLEFORM_H
 #define BORNAGAIN_GUI_VIEW_SAMPLEDESIGNER_SAMPLEFORM_H
 
-#include "GUI/View/Widget/GroupBoxes.h"
-#include <QPushButton>
+#include <QWidget>
 
 class HeinzFormLayout;
 class LayerForm;
 class LayerItem;
+class QPushButton;
+class QVBoxLayout;
 class SampleEditorController;
 class SampleItem;
 
 //! Form to present/edit a sample
-class SampleForm : public CollapsibleGroupBox {
+class SampleForm : public QWidget {
     Q_OBJECT
 public:
-    SampleForm(QWidget* parent, SampleItem* sampleItem, SampleEditorController* ec);
+    SampleForm(SampleItem* sampleItem, SampleEditorController* ec);
 
     //! Create widgets for the new layer.
     void onLayerAdded(LayerItem* layerItem);
@@ -50,7 +51,7 @@ public:
     LayerForm* findNextLayerForm(QWidget* w);
 
 private:
-    HeinzFormLayout* m_layout;
+    QVBoxLayout* m_layout;
     SampleItem* m_sampleItem;     //!< Ptr is borrowed, don't delete
     SampleEditorController* m_ec; //!< Ptr is borrowed, don't delete
     QList<QPushButton*> m_addLayerButtons;
-- 
GitLab