From 6c7dbce793a89d7807465239253a89c4468c69d0 Mon Sep 17 00:00:00 2001 From: Applin Date: Mon, 29 Jan 2024 08:58:17 +0000 Subject: [PATCH] Do not hold raw pointer to dialog in Elwin tab --- buildconfig/CMake/CppCheck_Suppressions.txt.in | 2 +- .../InelasticDataManipulationElwinTabView.cpp | 14 ++++++-------- .../InelasticDataManipulationElwinTabView.h | 3 +-- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/buildconfig/CMake/CppCheck_Suppressions.txt.in b/buildconfig/CMake/CppCheck_Suppressions.txt.in index 1491028f8125..9aa119388776 100644 --- a/buildconfig/CMake/CppCheck_Suppressions.txt.in +++ b/buildconfig/CMake/CppCheck_Suppressions.txt.in @@ -1425,7 +1425,7 @@ unreadVariable:${CMAKE_SOURCE_DIR}/qt/scientific_interfaces/ISISReflectometry/GU passedByValue:${CMAKE_SOURCE_DIR}/qt/scientific_interfaces/Indirect/Reduction/ISISEnergyTransferValidator.cpp:100 useStlAlgorithm:${CMAKE_SOURCE_DIR}/qt/scientific_interfaces/Indirect/Reduction/ISISEnergyTransferModelUtils.h:99 useStlAlgorithm:${CMAKE_SOURCE_DIR}/qt/scientific_interfaces/Inelastic/Analysis/FqFitDataPresenter.cpp:23 -virtualCallInConstructor:${CMAKE_SOURCE_DIR}/qt/scientific_interfaces/Inelastic/Analysis/IndirectFitDataView.h:43 +virtualCallInConstructor:${CMAKE_SOURCE_DIR}/qt/scientific_interfaces/Inelastic/Analysis/IndirectFitDataView.h:42 returnTempReference:${CMAKE_SOURCE_DIR}/qt/scientific_interfaces/Inelastic/Analysis/IndirectFitData.cpp:127 knownConditionTrueFalse:${CMAKE_SOURCE_DIR}/qt/scientific_interfaces/Inelastic/Analysis/IndirectFitData.cpp:93 useStlAlgorithm:${CMAKE_SOURCE_DIR}/qt/scientific_interfaces/Inelastic/Analysis/IqtFitModel.cpp:47 diff --git a/qt/scientific_interfaces/Inelastic/Manipulation/InelasticDataManipulationElwinTabView.cpp b/qt/scientific_interfaces/Inelastic/Manipulation/InelasticDataManipulationElwinTabView.cpp index b754dd4ec1c2..18ba14d66396 100644 --- a/qt/scientific_interfaces/Inelastic/Manipulation/InelasticDataManipulationElwinTabView.cpp +++ b/qt/scientific_interfaces/Inelastic/Manipulation/InelasticDataManipulationElwinTabView.cpp @@ -83,7 +83,7 @@ class ExcludeRegionDelegate : public QItemDelegate { namespace MantidQt::CustomInterfaces { using namespace IDA; InelasticDataManipulationElwinTabView::InelasticDataManipulationElwinTabView(QWidget *parent) - : m_presenter(), m_elwTree(nullptr), m_addWorkspaceDialog(nullptr) { + : m_presenter(), m_elwTree(nullptr) { // Create Editor Factories m_dblEdFac = new DoubleEditorFactory(this); @@ -204,22 +204,20 @@ void InelasticDataManipulationElwinTabView::notifyRemoveDataClicked() { m_presen void InelasticDataManipulationElwinTabView::notifyAddWorkspaceDialog() { showAddWorkspaceDialog(); } void InelasticDataManipulationElwinTabView::showAddWorkspaceDialog() { - if (m_addWorkspaceDialog) - return; - auto dialog = new MantidWidgets::AddWorkspaceDialog(parentWidget()); - connect(dialog, SIGNAL(addData()), this, SLOT(notifyAddData())); + connect(dialog, SIGNAL(addData(MantidWidgets::IAddWorkspaceDialog *)), this, + SLOT(notifyAddData(MantidWidgets::IAddWorkspaceDialog *))); dialog->setAttribute(Qt::WA_DeleteOnClose); dialog->setWSSuffices(getSampleWSSuffices()); dialog->setFBSuffices(getSampleFBSuffices()); dialog->updateSelectedSpectra(); dialog->show(); - - m_addWorkspaceDialog = dialog; } -void InelasticDataManipulationElwinTabView::notifyAddData() { addDataWksOrFile(m_addWorkspaceDialog); } +void InelasticDataManipulationElwinTabView::notifyAddData(MantidWidgets::IAddWorkspaceDialog *dialog) { + addDataWksOrFile(dialog); +} /** This method checks whether a Workspace or a File is being uploaded through the AddWorkspaceDialog * A File requires additional checks to ensure a file of the correct type is being loaded. The Workspace list is diff --git a/qt/scientific_interfaces/Inelastic/Manipulation/InelasticDataManipulationElwinTabView.h b/qt/scientific_interfaces/Inelastic/Manipulation/InelasticDataManipulationElwinTabView.h index 022aee36473b..aca7595ba313 100644 --- a/qt/scientific_interfaces/Inelastic/Manipulation/InelasticDataManipulationElwinTabView.h +++ b/qt/scientific_interfaces/Inelastic/Manipulation/InelasticDataManipulationElwinTabView.h @@ -95,7 +95,7 @@ private slots: void notifySelectedSpectrumChanged(int); void notifyPreviewIndexChanged(int); void notifyAddWorkspaceDialog(); - void notifyAddData(); + void notifyAddData(MantidWidgets::IAddWorkspaceDialog *dialog); void notifyRemoveDataClicked(); private: @@ -121,7 +121,6 @@ private slots: IElwinPresenter *m_presenter; QtTreePropertyBrowser *m_elwTree; - MantidWidgets::IAddWorkspaceDialog *m_addWorkspaceDialog; Ui::InelasticDataManipulationElwinTab m_uiForm; QtDoublePropertyManager *m_dblManager;