diff options
author | Christian Stenger <christian.stenger@qt.io> | 2022-06-13 09:38:01 +0200 |
---|---|---|
committer | Christian Stenger <christian.stenger@qt.io> | 2022-06-14 12:47:59 +0000 |
commit | 6c4d5ef3c7a74ff18d29c624c56b44bea6cfdc88 (patch) | |
tree | 24a248d7e2bbd0ace855cbe6cf43e69e445c5895 /src/libs/modelinglib | |
parent | a370c154d09e1a5d744cffa434c742de7eee6121 (diff) |
Modeling: Fix crash while reset model
Fixes: QTCREATORBUG-27226
Change-Id: I1333379a99ff5ebd08b121f2f014c6971a192699
Reviewed-by: David Schulz <david.schulz@qt.io>
Reviewed-by: hjk <hjk@qt.io>
Diffstat (limited to 'src/libs/modelinglib')
-rw-r--r-- | src/libs/modelinglib/qmt/diagram_controller/diagramcontroller.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/libs/modelinglib/qmt/diagram_controller/diagramcontroller.cpp b/src/libs/modelinglib/qmt/diagram_controller/diagramcontroller.cpp index f7d7e702e5..72eef3ef74 100644 --- a/src/libs/modelinglib/qmt/diagram_controller/diagramcontroller.cpp +++ b/src/libs/modelinglib/qmt/diagram_controller/diagramcontroller.cpp @@ -557,9 +557,11 @@ void DiagramController::onBeginResetModel() void DiagramController::onEndResetModel() { updateAllDiagramsList(); - foreach (MDiagram *diagram, m_allDiagrams) { + for (MDiagram *diagram : qAsConst(m_allDiagrams)) { + const QList<DElement *> elements = diagram->diagramElements(); // remove all elements which are not longer part of the model - foreach (DElement *element, diagram->diagramElements()) { + for (int i = elements.size() - 1; i >= 0; --i) { + DElement *element = elements.at(i); if (element->modelUid().isValid()) { MElement *modelElement = m_modelController->findElement(element->modelUid()); if (!modelElement) @@ -567,7 +569,7 @@ void DiagramController::onEndResetModel() } } // update all remaining elements from model - foreach (DElement *element, diagram->diagramElements()) + for (DElement *element : diagram->diagramElements()) updateElementFromModel(element, diagram, false); } emit endResetAllDiagrams(); |