diff --git a/GUI/coregui/Views/RealSpaceWidgets/RealSpaceCanvas.cpp b/GUI/coregui/Views/RealSpaceWidgets/RealSpaceCanvas.cpp index 33e623feab024f4ff2cfff76ea2a61fedbbb429a..0d524b93e83507496966ad01673ba0e948bba523 100644 --- a/GUI/coregui/Views/RealSpaceWidgets/RealSpaceCanvas.cpp +++ b/GUI/coregui/Views/RealSpaceWidgets/RealSpaceCanvas.cpp @@ -128,6 +128,8 @@ void RealSpaceCanvas::onChangeLayerSizeAction(double layerSizeChangeScale) void RealSpaceCanvas::onDataChanged(const QModelIndex& index) { auto item = m_sampleModel->itemForIndex(index); + if (!item) + return; if (!(item->modelType() == Constants::PropertyType && (item->displayName() == SessionGraphicsItem::P_XPOS @@ -137,6 +139,9 @@ void RealSpaceCanvas::onDataChanged(const QModelIndex& index) void RealSpaceCanvas::updateScene() { + if (!m_currentSelection.isValid()) + return; + QApplication::setOverrideCursor(Qt::WaitCursor); m_realSpaceModel.reset(new RealSpaceModel); @@ -215,6 +220,9 @@ void RealSpaceCanvas::setConnected(SampleModel* model, bool makeConnected) Qt::UniqueConnection); connect(model, &SampleModel::modelReset, this, &RealSpaceCanvas::resetScene, Qt::UniqueConnection); + connect(model, &SampleModel::modelAboutToBeReset, this, [&](){ m_currentSelection = QModelIndex();}, + Qt::UniqueConnection); + } else { disconnect(model, &SampleModel::rowsInserted, this, &RealSpaceCanvas::updateScene); disconnect(model, &SampleModel::rowsRemoved, this, &RealSpaceCanvas::updateScene);