'From Squeak3.3alpha of 30 January 2002 [latest update: #4769] on 24 March 2002 at 7:37:10 pm'! "Change Set: projSemiFix-hg Date: 24 March 2002 Author: Henrik Gedenryd This makes Project windows closable but simply comments out a chunk of Environments-related code that I translated into something equivalent for modules, but really couldn't make sense of."! !ImageSegment methodsFor: 'read/write segment' stamp: 'hg 3/24/2002 19:29'! rootsIncludingPlayers "Return a new roots array with more objects. (Caller should store into rootArray.) Player (non-systemDefined) gets its class and metaclass put into the Roots array. Then ask for the segment again." | extras havePresenter players morphs mod existing | userRootCnt ifNil: [userRootCnt _ arrayOfRoots size]. extras _ OrderedCollection new. arrayOfRoots do: [:root | (root isKindOf: Presenter) ifTrue: [havePresenter _ root]. (root isKindOf: PasteUpMorph) ifTrue: [ root isWorldMorph ifTrue: [havePresenter _ root presenter]]. (root isKindOf: Project) ifTrue: [havePresenter _ root world presenter]]. havePresenter ifNotNil: [ havePresenter flushPlayerListCache. "old and outside guys" morphs _ IdentitySet new: 400. havePresenter associatedMorph allMorphsAndBookPagesInto: morphs. players _ (morphs select: [:m | m player ~~ nil] thenCollect: [:m | m player]) asArray. players _ players select: [:ap | (arrayOfRoots includes: ap class) not & (ap class isSystemDefined not)]. extras addAll: (players collect: [:each | each class]). (mod _ havePresenter world project module) ifNil: [ extras addAll: (players collect: [:each | each class class])]. extras addAll: morphs. "Make then ALL roots!!" ]. existing _ arrayOfRoots asIdentitySet. extras _ extras reject: [ :each | existing includes: each]. extras isEmpty ifTrue: [^ nil]. "no change" mod ifNotNil: [ "this code is meaningless with modules, don't know what it should correspond to mod definesName: #Object ifTrue: [:a |self error: 'only look in local mod, not up chain']. " "If get error, use a message other than includesKey:" "extras reject: [:cls | mod definesName: cls name ifTrue: [:a | ]]. ModuleRefactorer new transferBindingsNamedIn: (extras collect: [:c | c name]) from: Module smalltalk to: mod." ]. havePresenter _ players _ morphs _ nil. ^ arrayOfRoots, extras! !