'From Squeak3.1alpha of 4 February 2001 [latest update: #3866] on 18 March 2001 at 5:30:49 pm'! "Change Set: HandlerFixes-ar Date: 18 March 2001 Author: Andreas Raab The change set fixes problems in existing event handlers after the ordering of the arguments was changed. Event handlers in the image are converted immediately, those on files will be converted when any of the old methods is used."! !CRDictionaryBrowser methodsFor: 'view hooks' stamp: 'ar 3/18/2001 17:26'! renameCharAction: arg1 sourceMorph: arg2 requestor: arg3 "Reorder the arguments for existing event handlers" (arg3 isMorph and:[arg3 eventHandler notNil]) ifTrue:[arg3 eventHandler fixReversedValueMessages]. ^self renameCharAction: arg1 event: arg2 sourceMorph: arg3! ! !EventHandler methodsFor: 'fixups' stamp: 'ar 3/18/2001 17:25'! fixReversedValueMessages "ar 3/18/2001: Due to the change in the ordering of the value parameter old event handlers may have messages that need to be fixed up. Do this here." self replaceSendsIn: #(renameCharAction:sourceMorph:requestor: makeGetter:from:forPart: makeSetter:from:forPart: newMakeGetter:from:forPart: newMakeSetter:from:forPart: clickOnLine:evt:envelope: limitHandleMoveEvent:from:index: mouseUpEvent:linkMorph:formData: mouseUpEvent:linkMorph:browserAndUrl: mouseDownEvent:noteMorph:pitch: mouseMoveEvent:noteMorph:pitch: mouseUpEvent:noteMorph:pitch: dragVertex:fromHandle:vertIndex: dropVertex:fromHandle:vertIndex: newVertex:fromHandle:afterVert: prefMenu:rcvr:pref: event:arrow:upDown:) with: #(renameCharAction:event:sourceMorph: makeGetter:event:from: makeSetter:event:from: newMakeGetter:event:from: newMakeSetter:event:from: clickOn:evt:from: limitHandleMove:event:from: mouseUpFormData:event:linkMorph: mouseUpBrowserAndUrl:event:linkMorph: mouseDownPitch:event:noteMorph: mouseMovePitch:event:noteMorph: mouseUpPitch:event:noteMorph: dragVertex:event:fromHandle: dropVertex:event:fromHandle: newVertex:event:fromHandle: prefMenu:event:rcvr: upDown:event:arrow:).! ! !EventHandler methodsFor: 'fixups' stamp: 'ar 3/18/2001 17:18'! replaceSendsIn: array1 with: array2 "Replace all the sends that occur in array1 with those in array2. Used for fixing old event handlers in files." | old index | 1 to: self class instSize do:[:i| old _ self instVarAt: i. index _ array1 identityIndexOf: old. index > 0 ifTrue:[self instVarAt: i put: (array2 at: index)]].! ! !HtmlInput methodsFor: 'morphic' stamp: 'ar 3/18/2001 17:27'! mouseUpEvent: arg1 linkMorph: arg2 formData: arg3 "Reorder the arguments for existing event handlers" (arg3 isMorph and:[arg3 eventHandler notNil]) ifTrue:[arg3 eventHandler fixReversedValueMessages]. ^self mouseUpFormData: arg1 event: arg2 linkMorph: arg3! ! !HtmlMap methodsFor: 'morphic' stamp: 'ar 3/18/2001 17:27'! mouseUpEvent: arg1 linkMorph: arg2 browserAndUrl: arg3 "Reorder the arguments for existing event handlers" (arg3 isMorph and:[arg3 eventHandler notNil]) ifTrue:[arg3 eventHandler fixReversedValueMessages]. ^self mouseUpBrowserAndUrl: arg1 event: arg2 linkMorph: arg3! ! !Morph methodsFor: 'event handling' stamp: 'ar 3/18/2001 17:21'! on: eventName send: selector to: recipient withValue: value "NOTE: selector must take 3 arguments, of which value will be the *** FIRST ***" self eventHandler ifNil: [self eventHandler: EventHandler new]. self eventHandler on: eventName send: selector to: recipient withValue: value ! ! !CategoryViewer methodsFor: 'get/set slots' stamp: 'ar 3/18/2001 17:26'! makeGetter: arg1 from: arg2 forPart: arg3 "Reorder the arguments for existing event handlers" (arg3 isMorph and:[arg3 eventHandler notNil]) ifTrue:[arg3 eventHandler fixReversedValueMessages]. ^self makeGetter: arg1 event: arg2 from: arg3! ! !CategoryViewer methodsFor: 'get/set slots' stamp: 'ar 3/18/2001 17:27'! makeSetter: arg1 from: arg2 forPart: arg3 "Reorder the arguments for existing event handlers" (arg3 isMorph and:[arg3 eventHandler notNil]) ifTrue:[arg3 eventHandler fixReversedValueMessages]. ^self makeSetter: arg1 event: arg2 from: arg3! ! !CategoryViewer methodsFor: 'get/set slots' stamp: 'ar 3/18/2001 17:27'! newMakeGetter: arg1 from: arg2 forPart: arg3 "Reorder the arguments for existing event handlers" (arg3 isMorph and:[arg3 eventHandler notNil]) ifTrue:[arg3 eventHandler fixReversedValueMessages]. ^self newMakeGetter: arg1 event: arg2 from: arg3! ! !CategoryViewer methodsFor: 'get/set slots' stamp: 'ar 3/18/2001 17:27'! newMakeSetter: arg1 from: arg2 forPart: arg3 "Reorder the arguments for existing event handlers" (arg3 isMorph and:[arg3 eventHandler notNil]) ifTrue:[arg3 eventHandler fixReversedValueMessages]. ^self newMakeSetter: arg1 event: arg2 from: arg3! ! !EnvelopeEditorMorph methodsFor: 'editing' stamp: 'ar 3/18/2001 17:27'! clickOnLine: arg1 evt: arg2 envelope: arg3 "Reorder the arguments for existing event handlers" (arg3 isMorph and:[arg3 eventHandler notNil]) ifTrue:[arg3 eventHandler fixReversedValueMessages]. ^self clickOn: arg1 evt: arg2 from: arg3! ! !EnvelopeEditorMorph methodsFor: 'editing' stamp: 'ar 3/18/2001 17:27'! limitHandleMoveEvent: arg1 from: arg2 index: arg3 "Reorder the arguments for existing event handlers" (arg3 isMorph and:[arg3 eventHandler notNil]) ifTrue:[arg3 eventHandler fixReversedValueMessages]. ^self limitHandleMove: arg1 event: arg2 from: arg3! ! !PianoKeyboardMorph methodsFor: 'simple keyboard' stamp: 'ar 3/18/2001 17:27'! mouseDownEvent: arg1 noteMorph: arg2 pitch: arg3 "Reorder the arguments for existing event handlers" (arg3 isMorph and:[arg3 eventHandler notNil]) ifTrue:[arg3 eventHandler fixReversedValueMessages]. ^self mouseDownPitch: arg1 event: arg2 noteMorph: arg3! ! !PianoKeyboardMorph methodsFor: 'simple keyboard' stamp: 'ar 3/18/2001 17:27'! mouseMoveEvent: arg1 noteMorph: arg2 pitch: arg3 "Reorder the arguments for existing event handlers" (arg3 isMorph and:[arg3 eventHandler notNil]) ifTrue:[arg3 eventHandler fixReversedValueMessages]. ^self mouseMovePitch: arg1 event: arg2 noteMorph: arg3! ! !PianoKeyboardMorph methodsFor: 'simple keyboard' stamp: 'ar 3/18/2001 17:28'! mouseUpEvent: arg1 noteMorph: arg2 pitch: arg3 "Reorder the arguments for existing event handlers" (arg3 isMorph and:[arg3 eventHandler notNil]) ifTrue:[arg3 eventHandler fixReversedValueMessages]. ^self mouseUpPitch: arg1 event: arg2 noteMorph: arg3! ! !PolygonMorph methodsFor: 'editing' stamp: 'ar 3/18/2001 17:28'! dragVertex: arg1 fromHandle: arg2 vertIndex: arg3 "Reorder the arguments for existing event handlers" (arg3 isMorph and:[arg3 eventHandler notNil]) ifTrue:[arg3 eventHandler fixReversedValueMessages]. ^self dragVertex: arg1 event: arg2 fromHandle: arg3! ! !PolygonMorph methodsFor: 'editing' stamp: 'ar 3/18/2001 17:28'! dropVertex: arg1 fromHandle: arg2 vertIndex: arg3 "Reorder the arguments for existing event handlers" (arg3 isMorph and:[arg3 eventHandler notNil]) ifTrue:[arg3 eventHandler fixReversedValueMessages]. ^self dropVertex: arg1 event: arg2 fromHandle: arg3! ! !PolygonMorph methodsFor: 'editing' stamp: 'ar 3/18/2001 17:28'! newVertex: arg1 fromHandle: arg2 afterVert: arg3 "Reorder the arguments for existing event handlers" (arg3 isMorph and:[arg3 eventHandler notNil]) ifTrue:[arg3 eventHandler fixReversedValueMessages]. ^self newVertex: arg1 event: arg2 fromHandle: arg3! ! !PreferencesPanel methodsFor: 'initialization' stamp: 'ar 3/18/2001 17:28'! prefMenu: arg1 rcvr: arg2 pref: arg3 "Reorder the arguments for existing event handlers" (arg3 isMorph and:[arg3 eventHandler notNil]) ifTrue:[arg3 eventHandler fixReversedValueMessages]. ^self prefMenu: arg1 event: arg2 rcvr: arg3! ! !SyntaxMorph methodsFor: 'pop ups' stamp: 'ar 3/18/2001 17:28'! event: arg1 arrow: arg2 upDown: arg3 "Reorder the arguments for existing event handlers" (arg3 isMorph and:[arg3 eventHandler notNil]) ifTrue:[arg3 eventHandler fixReversedValueMessages]. ^self upDown: arg1 event: arg2 arrow: arg3! ! "Postscript: Fix all existing event handlers in the image. All others will be converted dynamically." | handlers h | handlers _ EventHandler allInstances. 'Fixing up existing event handlers' displayProgressAt: (ActiveHand ifNil:[Sensor]) cursorPoint from: 1 to: handlers size during:[:bar| 1 to: handlers size do:[:i| (i bitAnd: 255) = 1 ifTrue:[bar value: i]. (handlers at: i) fixReversedValueMessages. ]. ].!