'From Squeak3.0 of 4 February 2001 [latest update: #3522] on 18 February 2001 at 10:35:05 pm'! "Change Set: WnldHalos-ar Date: 18 February 2001 Author: Andreas Raab Fix halo transfer in Wonderlands."! !WonderlandCameraMorph methodsFor: 'wrappers' stamp: 'ar 2/18/2001 22:16'! addHalo: evt "Add a halo to an object" | actor wrapper root | self removeAllWrappers. "Get rid of them" evt == nil ifTrue:[^super addHalo: evt]. actor _ myCamera pickAt: evt cursorPoint. actor == nil ifTrue:[^super addHalo: evt]. "Nothing hit" wrapper _ WonderlandWrapperMorph on: actor. root _ wrapper createHierarchy. root computeFullBounds: self. self addMorphFront: root. "pass on the event as if it had been there" root processEvent: evt copy resetHandlerFields. ! ! !WonderlandWrapperMorph methodsFor: 'accessing' stamp: 'ar 2/18/2001 22:32'! hasHalo: aBool super hasHalo: aBool. aBool ifFalse:[ (self hasProperty: #surviveHaloLoss) ifFalse:[self delete]. self removeProperty: #surviveHaloLoss]. ! ! !WonderlandWrapperMorph methodsFor: 'accessing' stamp: 'ar 2/18/2001 22:32'! transferHalo: event from: formerHaloOwner "Progressively transfer the halo to the next likely recipient" | localEvt | formerHaloOwner == self ifTrue:[self setProperty: #surviveHaloLoss toValue: true]. "Never transfer halo to top-most world" (self wantsHaloFromClick and:[formerHaloOwner ~~ self]) ifTrue:[^self addHalo: event from: formerHaloOwner]. event shiftPressed ifTrue:[ "Pass it outwards" ^owner ifNotNil:[owner transferHalo: event from: formerHaloOwner]]. self submorphsDo:[:m| localEvt _ event transformedBy: (m transformedFrom: self). (m fullContainsPoint: localEvt position) ifTrue:[^m transferHalo: event from: formerHaloOwner]. ]. "We're at the bottom most level; throw the event back up to the root to find recipient" ^self getCameraMorph transferHalo: event from: formerHaloOwner.! !