The new selection concept (see T23751) provides basic classes to introduce the new mechanism. One of the classes is the `QmitkDataStorageSimpleTreeModel` used by `QmitkDataStorageTreeInspector`.
This class is an implementation of the `QmitkAbstractDataStorageModel` and provides an implementation of the `UpdateModelData`-function and the `DataStorageChanged`-function.
However, if `DataStorageChanged` is invoked, which in turn invokes `UpdateModelData`, the workbench crashes in `int QmitkDataStorageTreeModelInternalItem::GetIndex() const`.
`UpdateModelData` is also invoked on initialization when e.g. the data storage is set for the first time. Here no crash happens.
I couldn't reproduce the problem, because I was not able to reproduce the workflow I used back in 2019. However, I found a way to reproduce the basic problem:
# enable the data storage viewer test plugin
# open MITK and open the data storage viewer test plugin
# load a data node and create a child segmentation node
# show / select the data storage viewer test plugin
# remove the top-level image node inside the datamanager
-> Crash inside `QmitkDataStorageTreeModelInternalItem::IndexOfChild`, called from `QmitkDataStorageTreeModelInternalItem::GetIndex()`
The data storage viewer test plugin is needed to have an additional `QmitkDataStorageSimpleTreeModel` that reacts to the node removed event.
However, my proposed fix does not work here. So maybe this is a completely different bug.
The `QmitkDataStorageSimpleTreeModel` uses the `UpdateModelData`-function to reset its data nodes. This is done by retrieving all nodes from the data storage. Here it seems as if the removed node still exists.
Main message to take away: We should define clear tests for the data storage models and views and test all functionality.