'From Squeak3.1alpha of 28 February 2001 [latest update: #4200] on 17 July 2001 at 9:39:52 am'! "Change Set: TwitchAgain-tk Date: 17 July 2001 Author: Ted Kaehler The idea of only being able to grab a morph by its border was too inconvienient. This update revets to allowing any morph to be grabbed by its interior."! !PasteUpMorph methodsFor: 'event handling' stamp: 'RAA 12/18/2000 16:12'! mouseDown: evt "Handle a mouse down event." | grabbedMorph handHadHalos | grabbedMorph _ self morphToGrab: evt. grabbedMorph ifNotNil:[ grabbedMorph isSticky ifTrue:[^self]. self isPartsBin ifFalse:[^evt hand grabMorph: grabbedMorph]. grabbedMorph _ grabbedMorph partRepresented duplicate. grabbedMorph restoreSuspendedEventHandler. (grabbedMorph fullBounds containsPoint: evt position) ifFalse:[grabbedMorph position: evt position]. "Note: grabbedMorph is ownerless after duplicate so use #grabMorph:from: instead" ^evt hand grabMorph: grabbedMorph from: self]. (super handlesMouseDown: evt) ifTrue:[^super mouseDown: evt]. handHadHalos _ evt hand halo notNil. evt hand halo: nil. "shake off halos" evt hand releaseKeyboardFocus. "shake of keyboard foci" evt shiftPressed ifTrue:[ ^evt hand waitForClicksOrDrag: self event: evt selectors: { #findWindow:. nil. #dragThroughOnDesktop:} threshold: 5]. self isWorldMorph ifTrue: [ handHadHalos ifTrue: [^self addAlarm: #invokeWorldMenu: with: evt after: 200]. ^self invokeWorldMenu: evt ]. "otherwise, explicitly ignore the event if we're not the world, so that we could be picked up if need be" self isWorldMorph ifFalse:[evt wasHandled: false]. ! ! SystemWindow removeSelector: #okToGrabAt:! BookMorph removeSelector: #okToGrabAt:! BorderedMorph removeSelector: #okToGrabAt:! Morph removeSelector: #okToGrabAt:!