Good catch! There was a bug in the logic that marks the scene as saved (introduced during recent improvement of scene save error handling). I’ll fix the issue and also include a code snippet that lists modified nodes since the last save.
I think you can see what nodes it thinks have been modified since last save by opening the save dialog and the items that are unchecked are the things that haven’t been modified since last save. Here I saved everything and then reopened the save dialog (hence unchecked items) and noticed the mrml scene was still checked. So maybe something about the mrml scene is then reason for the continued alert of still unsaved data.
Saving of scene or data is offered on application exit if either
any nodes in the scene were modified (this logic got fixed today), or
bulk data in any storable node is modified.
From tomorrow in Slicer Preview Release you can get the lists of these modified nodes like this:
# Modified nodes that are stored in the scene
nodesModifiedInScene = vtk.vtkCollection()
slicer.mrmlScene.GetModifiedSinceRead(nodesModifiedInScene)
for nodeIndex in range(nodesModifiedInScene.GetNumberOfItems()):
print(nodesModifiedInScene.GetItemAsObject(nodeIndex).GetID())
# Nodes that contain modified bulk data (stored in files)
modifiedStorableNodes = vtk.vtkCollection()
slicer.mrmlScene.GetStorableNodesModifiedSinceRead(modifiedStorableNodes)
for nodeIndex in range(modifiedStorableNodes.GetNumberOfItems()):
print(modifiedStorableNodes.GetItemAsObject(nodeIndex).GetID())