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
!