Eliot Miranda uploaded a new version of EToys to project The Trunk: http://source.squeak.org/trunk/EToys-eem.303.mcz
==================== Summary ====================
Name: EToys-eem.303 Author: eem Time: 3 July 2017, 4:16:51.503353 pm UUID: 98b26648-e522-49a7-98db-0d8ce56f9c70 Ancestors: EToys-mt.302
Use NativeImageSegment to compute rootsIncludingPlayers.
=============== Diff against EToys-mt.302 ===============
Item was changed: ----- Method: Project>>okToChangeSilently (in category '*Etoys-Squeakland-release') ----- okToChangeSilently "Answer whether the window in which the project is housed can be dismissed -- which is destructive. We never clobber a project without confirmation"
| ok is list | self subProjects size > 0 ifTrue: [^ false]. ok := world isMorph not and: [world scheduledControllers size <= 1]. ok ifFalse: [self isMorphic ifTrue: [self parent == CurrentProject ifFalse: [^ true]]]. "view from elsewhere. just delete it." ok := true. ok ifFalse: [^ false].
world isMorph ifTrue: [Smalltalk at: #WonderlandCameraMorph ifPresent:[:aClass | world submorphs do: "special release for wonderlands" [:m | (m isKindOf: aClass) and: [m getWonderland release]]]. "Remove Player classes and metaclasses owned by project" + is := NativeImageSegment new arrayOfRoots: {self}. - is := ImageSegment new arrayOfRoots: (Array with: self). (list := is rootsIncludingPlayers) ifNotNil: [list do: [:playerCls | (playerCls respondsTo: #isMeta) ifTrue: [playerCls isMeta ifFalse: [playerCls removeFromSystemUnlogged]]]]].
self removeChangeSetIfPossible. "do this last since it will render project inaccessible to #allProjects and their ilk" ProjectHistory forget: self. Project deletingProject: self. ^ true !
squeak-dev@lists.squeakfoundation.org