diff --git a/GUI/coregui/Views/JobWidgets/ParameterTuningDelegate.cpp b/GUI/coregui/Views/JobWidgets/ParameterTuningDelegate.cpp index 1d5d1920839911c4d911968cec8d0997e32edcfb..e3cc4980000be164bc4c1c6f9b1f020b4a73b82e 100644 --- a/GUI/coregui/Views/JobWidgets/ParameterTuningDelegate.cpp +++ b/GUI/coregui/Views/JobWidgets/ParameterTuningDelegate.cpp @@ -103,8 +103,8 @@ ParameterTuningDelegate::ParameterTuningDelegate(QObject *parent) ParameterTuningDelegate::~ParameterTuningDelegate() { - if(m_currentItem) - m_currentItem->mapper()->unsubscribe(this); +// if(m_currentItem) +// m_currentItem->mapper()->unsubscribe(this); } @@ -195,15 +195,16 @@ QWidget *ParameterTuningDelegate::createEditor(QWidget *parent, m_contentLayout->addWidget(m_valueBox); m_contentLayout->addWidget(m_slider); - m_currentItem->mapper()->setOnValueChange( - [this](){ - m_valueBox->setValue(m_currentItem->value().toDouble()); - }, this); + // FIXME there is an issue with time of life of editor .vs. item +// m_currentItem->mapper()->setOnValueChange( +// [this](){ +// m_valueBox->setValue(m_currentItem->value().toDouble()); +// }, this); - m_currentItem->mapper()->setOnItemDestroy( - [this](SessionItem *) { - m_currentItem = 0; - }, this); +// m_currentItem->mapper()->setOnItemDestroy( +// [this](SessionItem *) { +// m_currentItem = 0; +// }, this); m_contentWidget->setLayout(m_contentLayout); diff --git a/GUI/coregui/Views/JobWidgets/ParameterTuningWidget.cpp b/GUI/coregui/Views/JobWidgets/ParameterTuningWidget.cpp index 519bce9826a914977ee7592c911535984185a804..90ba9dd1c572d5c03ee4c0f2d49e9008c668cd92 100644 --- a/GUI/coregui/Views/JobWidgets/ParameterTuningWidget.cpp +++ b/GUI/coregui/Views/JobWidgets/ParameterTuningWidget.cpp @@ -202,6 +202,8 @@ void ParameterTuningWidget::restoreModelsOfCurrentJobItem() if(m_currentJobItem->isRunning()) return; + closeActiveEditors(); + m_jobModel->restore(m_currentJobItem); m_jobModel->runJob(m_currentJobItem->index()); } @@ -299,13 +301,18 @@ void ParameterTuningWidget::setTuningDelegateEnabled(bool enabled) } else { m_delegate->setReadOnly(true); - QModelIndex index = m_treeView->currentIndex(); - QWidget *editor = m_treeView->indexWidget(index); - if(editor) { - //m_delegate->commitData(editor); - m_delegate->closeEditor(editor, QAbstractItemDelegate::NoHint); - } - m_treeView->selectionModel()->clearSelection(); + closeActiveEditors(); + } +} + +void ParameterTuningWidget::closeActiveEditors() +{ + QModelIndex index = m_treeView->currentIndex(); + QWidget *editor = m_treeView->indexWidget(index); + if(editor) { + //m_delegate->commitData(editor); + m_delegate->closeEditor(editor, QAbstractItemDelegate::NoHint); } + m_treeView->selectionModel()->clearSelection(); } diff --git a/GUI/coregui/Views/JobWidgets/ParameterTuningWidget.h b/GUI/coregui/Views/JobWidgets/ParameterTuningWidget.h index 7d131998eff6ccdfdf468e2328508b74b0c3ea74..b659dbf380e49edfd8d7febdc4f96132d3f37276 100644 --- a/GUI/coregui/Views/JobWidgets/ParameterTuningWidget.h +++ b/GUI/coregui/Views/JobWidgets/ParameterTuningWidget.h @@ -68,6 +68,7 @@ private: void updateDragAndDropSettings(); void setTuningDelegateEnabled(bool enabled); + void closeActiveEditors(); JobModel *m_jobModel; JobItem *m_currentJobItem;