'From Squeak3.6beta of ''4 July 2003'' [latest update: #5411] on 8 September 2003 at 5:24:11 pm'! "Change Set: EtoyReferencePlayfieldFix-kfr Date: 8 September 2003 Author: Karl Ramberg Fix to return the first owning playfield so we get correct x and y values for embedded morphs. Ned Konz simplified the code and added a fix for a bug caused by having a viewer open on a playfield. "! !Morph methodsFor: 'e-toy support' stamp: 'nk 9/8/2003 17:11'! referencePlayfield "Answer the PasteUpMorph to be used for cartesian-coordinate reference" | former | owner ifNotNil: [ self allOwnersDo: [ :o | o isPlayfieldLike ifTrue: [ ^o ]]. (owner isHandMorph and: [(former _ self formerOwner) notNil]) ifTrue: [^ former isPlayfieldLike ifTrue: [former] ifFalse: [former referencePlayfield]]]. ^ self world! ! !PasteUpMorph methodsFor: 'e-toy support' stamp: 'nk 9/8/2003 17:17'! referencePlayfield "Answer a pasteup morph to be used as the reference for cartesian coordinates. Do not get fooled by other morphs (like viewers) that happen to be named 'playfield'." ^self isWorldMorph ifTrue: [ self submorphThat: [ :s | (s knownName = 'playfield') and: [ s isPlayfieldLike] ] ifNone: [self]] ifFalse: [ super referencePlayfield ]! !