Ricardo Moran uploaded a new version of Etoys to project Etoys: http://source.squeak.org/etoys/Etoys-Richo.43.mcz
==================== Summary ====================
Name: Etoys-Richo.43 Author: Richo Time: 31 August 2010, 12:25:12 pm UUID: 70f454bc-9a94-a848-b81b-b1d07389f837 Ancestors: Etoys-Richo.42
* Fix for (SQ-771) If you try and rotate a Speech Bubble Etoys Freezes
=============== Diff against Etoys-Richo.42 ===============
Item was changed: ----- Method: SpeechBubbleMorph>>target: (in category 'accessing') ----- target: aMorph target isMorph ifTrue: [target bubble: nil]. target := aMorph. + target notNil ifTrue: [target bubble: self topRendererOrSelf. self positionMyselfAccordingToTarget ]! - target notNil ifTrue: [self positionMyselfAccordingToTarget ]!
Item was changed: ----- Method: Morph>>stopSayingOrThinking (in category '*Etoys-SpeechBubbles') ----- stopSayingOrThinking | currentBubble | currentBubble := self bubble. currentBubble isNil ifTrue: [^self]. + currentBubble topRendererOrSelf delete. - currentBubble delete. self bubble: nil!
Item was changed: ----- Method: SpeechBubbleMorph>>drawOn: (in category 'drawing') ----- drawOn: aCanvas!
Item was changed: ----- Method: SpeechBubbleMorph>>positionMyselfAccordingToTarget (in category 'stepping') ----- positionMyselfAccordingToTarget | newCenter newOwner | "Modify mi position" newCenter := target topRendererOrSelf center - (0 @ ((target topRendererOrSelf height + self height) / 2)). + self privatePosition: newCenter - (self topRendererOrSelf extent // 2). - self privatePosition: newCenter - (self extent // 2). "Don't forget to check if my owner is still the right one. Maybe the morph was inside a Playfield and the user grabed it and put it in the World" (newOwner := target ownerThatIsA: PasteUpMorph) ifNil: [^self]. + self owner ~= newOwner ifTrue: [newOwner addMorph: self topRendererOrSelf]! - self owner ~= newOwner ifTrue: [newOwner addMorph: self]!
Item was changed: ----- Method: SpeechBubbleMorph>>delete (in category 'initialize-release') ----- delete + target isMorph ifTrue: [target bubble: nil]. super delete. target := msgMorph := type := nil. !
Item was changed: ----- Method: SpeechBubbleMorph>>privatePosition: (in category 'private') ----- privatePosition: aPoint "Always changes the position, regardless of the target" + self isFlexed ifTrue: [self topRendererOrSelf position: aPoint] + ifFalse: [super position: aPoint] + ! - super position: aPoint!
etoys-dev@lists.squeakfoundation.org