<body><div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000">
Hi Nicolas. :-)<div><br></div><div>> <span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">If you have a less overkill idea, i take it :)</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Yeah, I think overkill is just necessary in this case. BUT I would rather keep the MouseWheelState. See other post:</span></div><div><a href="http://forum.world.st/The-Inbox-Morphic-nice-1613-mcz-tp5108896p5109478.html"><span style="font-size: 10pt;font-family: Arial, Helvetica, sans-serif">http://forum.world.st/The-Inbox-Morphic-nice-1613-mcz-tp5108896p5109478.html</span></a><br></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><br></span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Best,</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">Marcel</span></div><div class="mb_sig"></div><blockquote class="history_container" type="cite" style="border-left-style:solid;border-width:1px; margin-top:20px; margin-left:0px;padding-left:10px;">
<p style="color: #AAAAAA; margin-top: 10px;">Am 29.12.2019 23:47:46 schrieb Nicolas Cellier <nicolas.cellier.aka.nice@gmail.com>:</p><div style="font-family:Arial,Helvetica,sans-serif">
<div dir="ltr"><div>Hi all,</div><div>loading this package triggers an Exception - see below.</div><div>Since I triggered the package load thru UI, a HandMorph method is still active on the stack.</div><div>But since I removed an ivar, that's the old method, not the up-to-date method...</div><div>Hence it has wrong ivar offsets, and access the wrong instance variable.</div><div>Is there any way I can abort/restart the UI process in postscript?</div><div>Or should I use complex preamble that duplicates HandMorph class, let it adopt current hand,</div><div>then complex postscript that migrate hand to the updated HandMorph class?</div><div><br></div><div>If you have a less overkill idea, i take it :)</div><div><br></div><div><br></div><div>29 December 2019 11:37:47.264169 pm<br><br>VM: Win32 - Smalltalk<br>Image: Squeak5.3beta [latest update: #19301]<br><br>SecurityManager state:<br>Restricted: false<br>FileAccess: true<br>SocketAccess: true<br>Working Dir X:\Smalltalk\opensmalltalk-vm\image<br>Trusted Dir X:\Smalltalk\opensmalltalk-vm\image\nicolas<br>Untrusted Dir \\Mac\Home\Documents\My Squeak<br><br>Point(Object)>>doesNotUnderstand: #hand<br> Receiver: 85@9<br> Arguments and temporary variables: <br> aMessage: hand<br> exception: MessageNotUnderstood: Point>>hand<br> resumeValue: nil<br> Receiver's instance variables: <br> x: 85<br> y: 9<br><br>MouseOverHandler>>processMouseOver:<br> Receiver: a MouseOverHandler<br> Arguments and temporary variables: <br><<error during printing><br> Receiver's instance variables: <br> mouseOverMorphs: {a MenuItemMorph(1214112)'copy bug report to clipboard' . a MenuMorph...etc...<br> enteredMorphs: a WriteStream<br> overMorphs: a WriteStream<br> leftMorphs: an OrderedCollection()<br><br>HandMorph>>handleEvent:<br> Receiver: a HandMorph(72556)<br> Arguments and temporary variables: <br> unfilteredEvent: [419@57 mouseUp ( red ) 8809265]<br> filteredEvent: [419@57 mouseUp ( red ) 8809265]<br> Receiver's instance variables: <br> bounds: 668@437 corner: 684@453<br> owner: a PasteUpMorph(2434915) [world]<br> submorphs: #()<br> fullBounds: 668@437 corner: 684@453<br> color: Color blue<br> extension: a MorphExtension (4039828) [eventHandler = an EventHandler] [other:...etc...<br> mouseFocus: nil<br> keyboardFocus: a PluggableListMorphPlus(1825828)<br> eventListeners: nil<br> mouseListeners: nil<br> keyboardListeners: nil<br> eventCaptureFilters: nil<br> mouseCaptureFilters: nil<br> keyboardCaptureFilters: a WeakArray(a HandMorph(72556))<br> mouseClickState: nil<br> mouseOverHandler: a MouseOverHandler<br> lastMouseEvent: [668@437 mouseUp ( red ) 9055140]<br> targetOffset: 45@12<br> damageRecorder: a DamageRecorder<br> cacheCanvas: nil<br> cachedCanvasHasHoles: false<br> temporaryCursor: nil<br> temporaryCursorOffset: nil<br> hardwareCursor: nil<br> hasChanged: true<br> savedPatch: nil<br> userInitials: ''<br> lastEventBuffer: #(1 9055140 668 437 0 0 1 1)<br> genieGestureProcessor: nil<br> keyboardInterpreter: an UTF32InputInterpreter<br><br>HandMorph>>processEvents<br> Receiver: a HandMorph(72556)<br> Arguments and temporary variables: <br> evt: [419@57 mouseUp ( red ) 8809265]<br> evtBuf: #(1 8809265 419 57 0 0 1 1)<br> type: 1<br> hadAny: false<br> Receiver's instance variables: <br> bounds: 668@437 corner: 684@453<br> owner: a PasteUpMorph(2434915) [world]<br> submorphs: #()<br> fullBounds: 668@437 corner: 684@453<br> color: Color blue<br> extension: a MorphExtension (4039828) [eventHandler = an EventHandler] [other:...etc...<br> mouseFocus: nil<br> keyboardFocus: a PluggableListMorphPlus(1825828)<br> eventListeners: nil<br> mouseListeners: nil<br> keyboardListeners: nil<br> eventCaptureFilters: nil<br> mouseCaptureFilters: nil<br> keyboardCaptureFilters: a WeakArray(a HandMorph(72556))<br> mouseClickState: nil<br> mouseOverHandler: a MouseOverHandler<br> lastMouseEvent: [668@437 mouseUp ( red ) 9055140]<br> targetOffset: 45@12<br> damageRecorder: a DamageRecorder<br> cacheCanvas: nil<br> cachedCanvasHasHoles: false<br> temporaryCursor: nil<br> temporaryCursorOffset: nil<br> hardwareCursor: nil<br> hasChanged: true<br> savedPatch: nil<br> userInitials: ''<br> lastEventBuffer: #(1 9055140 668 437 0 0 1 1)<br> genieGestureProcessor: nil<br> keyboardInterpreter: an UTF32InputInterpreter<br><br>[] in WorldState>>doOneCycleNowFor:<br> Receiver: a WorldState<br> Arguments and temporary variables: <br><<error during printing><br> Receiver's instance variables: <br> hands: {a HandMorph(72556)}<br> activeHand: a HandMorph(72556)<br> viewBox: 0@0 corner: 1024@664<br> canvas: a FormCanvas on: DisplayScreen(1024x664x32)<br> damageRecorder: a DamageRecorder<br> stepList: a Heap(StepMessage(#stepAt: -> a ClockMorph(3939335)'23:37:47')(a ClockMorph...etc...<br> lastStepTime: 3755111867234<br> lastStepMessage: nil<br> lastCycleTime: 3755111867257<br> commandHistory: a CommandHistory<br> alarms: a MorphicAlarmQueue<br> lastAlarmTime: 3755111867234<br> remoteServer: nil<br> multiCanvas: nil<br> interCycleDelay: a Delay(20 msecs)<br><br>Array(SequenceableCollection)>>do:<br> Receiver: {a HandMorph(72556)}<br> Arguments and temporary variables: <br> aBlock: [closure] in WorldState>>doOneCycleNowFor:<br> index: 1<br> indexLimiT: 1<br> Receiver's instance variables: <br>{a HandMorph(72556)}<br><br>WorldState>>handsDo:<br> Receiver: a WorldState<br> Arguments and temporary variables: <br> aBlock: [closure] in WorldState>>doOneCycleNowFor:<br> Receiver's instance variables: <br> hands: {a HandMorph(72556)}<br> activeHand: a HandMorph(72556)<br> viewBox: 0@0 corner: 1024@664<br> canvas: a FormCanvas on: DisplayScreen(1024x664x32)<br> damageRecorder: a DamageRecorder<br> stepList: a Heap(StepMessage(#stepAt: -> a ClockMorph(3939335)'23:37:47')(a ClockMorph...etc...<br> lastStepTime: 3755111867234<br> lastStepMessage: nil<br> lastCycleTime: 3755111867257<br> commandHistory: a CommandHistory<br> alarms: a MorphicAlarmQueue<br> lastAlarmTime: 3755111867234<br> remoteServer: nil<br> multiCanvas: nil<br> interCycleDelay: a Delay(20 msecs)<br><br>WorldState>>doOneCycleNowFor:<br> Receiver: a WorldState<br> Arguments and temporary variables: <br> aWorld: a PasteUpMorph(2434915) [world]<br> capturingGesture: #(false)<br> Receiver's instance variables: <br> hands: {a HandMorph(72556)}<br> activeHand: a HandMorph(72556)<br> viewBox: 0@0 corner: 1024@664<br> canvas: a FormCanvas on: DisplayScreen(1024x664x32)<br> damageRecorder: a DamageRecorder<br> stepList: a Heap(StepMessage(#stepAt: -> a ClockMorph(3939335)'23:37:47')(a ClockMorph...etc...<br> lastStepTime: 3755111867234<br> lastStepMessage: nil<br> lastCycleTime: 3755111867257<br> commandHistory: a CommandHistory<br> alarms: a MorphicAlarmQueue<br> lastAlarmTime: 3755111867234<br> remoteServer: nil<br> multiCanvas: nil<br> interCycleDelay: a Delay(20 msecs)<br><br>WorldState>>doOneCycleFor:<br> Receiver: a WorldState<br> Arguments and temporary variables: <br> aWorld: a PasteUpMorph(2434915) [world]<br> Receiver's instance variables: <br> hands: {a HandMorph(72556)}<br> activeHand: a HandMorph(72556)<br> viewBox: 0@0 corner: 1024@664<br> canvas: a FormCanvas on: DisplayScreen(1024x664x32)<br> damageRecorder: a DamageRecorder<br> stepList: a Heap(StepMessage(#stepAt: -> a ClockMorph(3939335)'23:37:47')(a ClockMorph...etc...<br> lastStepTime: 3755111867234<br> lastStepMessage: nil<br> lastCycleTime: 3755111867257<br> commandHistory: a CommandHistory<br> alarms: a MorphicAlarmQueue<br> lastAlarmTime: 3755111867234<br> remoteServer: nil<br> multiCanvas: nil<br> interCycleDelay: a Delay(20 msecs)<br><br>PasteUpMorph>>doOneCycle<br> Receiver: a PasteUpMorph(2434915) [world]<br> Arguments and temporary variables: <br><br> Receiver's instance variables: <br> bounds: 0@0 corner: 1024@664<br> owner: nil<br> submorphs: {a PluggableSystemWindow<MessageNotUnderstood: Point>>hand>(306803) ...etc...<br> fullBounds: 0@0 corner: 1024@664<br> color: (Color r: 0.251 g: 0.259 b: 0.267)<br> extension: a MorphExtension (3123555) [eventHandler = an EventHandler] [other:...etc...<br> borderWidth: 0<br> borderColor: (Color r: 0.515 g: 0.181 b: 0.263)<br> presenter: an EtoysPresenter (1693676)<br> model: a MorphicModel(3077142)<br> cursor: 1<br> padding: 3<br> backgroundMorph: nil<br> turtleTrailsForm: nil<br> turtlePen: nil<br> lastTurtlePositions: nil<br> isPartsBin: nil<br> indicateCursor: nil<br> wantsMouseOverHalos: nil<br> worldState: a WorldState<br> griddingOn: nil<br><br>[] in MorphicProject>>spawnNewProcess<br> Receiver: a MorphicProject (Unnamed1) in a PasteUpMorph(2434915) [world]<br> Arguments and temporary variables: <br><br> Receiver's instance variables: <br> dependents: nil<br> world: a PasteUpMorph(2434915) [world]<br> uiManager: a MorphicUIManager<br> changeSet: a ChangeSet named Unnamed1<br> transcript: a TranscriptStream<br> parentProject: a MorphicProject (Unnamed1) in a PasteUpMorph(2434915) [world]<br> previousProject: nil<br> displayDepth: 32<br> viewSize: 151@132<br> thumbnail: Form(151x132x32)<br> nextProject: nil<br> projectParameters: an IdentityDictionary(#PrevailingProjectFlags->an IdentityDictionary...etc...<br> version: nil<br> urlList: nil<br> lastDirectory: nil<br> lastSavedAtSeconds: nil<br> projectPreferenceFlagDictionary: an IdentityDictionary(#showSharedFlaps->true #showWorldMainDockingBar...etc...<br> resourceManager: a ResourceManager<br> uiProcess: a Process in nil<br><br>[] in BlockClosure>>newProcess<br> Receiver: [closure] in MorphicProject>>spawnNewProcess<br> Arguments and temporary variables: <br><br> Receiver's instance variables: <br> outerContext: MorphicProject>>spawnNewProcess<br> startpc: 93<br> numArgs: 0<br><br><br>--- The full stack ---<br>Point(Object)>>doesNotUnderstand: #hand<br>MouseOverHandler>>processMouseOver:<br>HandMorph>>handleEvent:<br>HandMorph>>processEvents<br>[] in WorldState>>doOneCycleNowFor:<br>Array(SequenceableCollection)>>do:<br>WorldState>>handsDo:<br>WorldState>>doOneCycleNowFor:<br>WorldState>>doOneCycleFor:<br>PasteUpMorph>>doOneCycle<br>[] in MorphicProject>>spawnNewProcess<br>[] in BlockClosure>>newProcess<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le dim. 29 déc. 2019 à 15:08, <<a href="mailto:commits@source.squeak.org">commits@source.squeak.org</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Nicolas Cellier uploaded a new version of Morphic to project The Inbox:<br>
<a href="http://source.squeak.org/inbox/Morphic-nice.1614.mcz" rel="noreferrer" target="_blank">http://source.squeak.org/inbox/Morphic-nice.1614.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: Morphic-nice.1614<br>
Author: nice<br>
Time: 29 December 2019, 3:07:59.051586 pm<br>
UUID: 003857a5-817d-4dc9-bf15-80c6bc584d51<br>
Ancestors: Morphic-nice.1613<br>
<br>
Forgot to remove the mouseWheelState ivar from HandMorph<br>
<br>
The testNoObsoleteClasses was already failing, but we shall not make it worse...<br>
<br>
=============== Diff against Morphic-nice.1613 ===============<br>
<br>
Item was changed:<br>
Morph subclass: #HandMorph<br>
+ instanceVariableNames: 'mouseFocus keyboardFocus eventListeners mouseListeners keyboardListeners eventCaptureFilters mouseCaptureFilters keyboardCaptureFilters mouseClickState mouseOverHandler lastMouseEvent targetOffset damageRecorder cacheCanvas cachedCanvasHasHoles temporaryCursor temporaryCursorOffset hardwareCursor hasChanged savedPatch userInitials lastEventBuffer genieGestureProcessor keyboardInterpreter'<br>
- instanceVariableNames: 'mouseFocus keyboardFocus eventListeners mouseListeners keyboardListeners eventCaptureFilters mouseCaptureFilters keyboardCaptureFilters mouseClickState mouseOverHandler mouseWheelState lastMouseEvent targetOffset damageRecorder cacheCanvas cachedCanvasHasHoles temporaryCursor temporaryCursorOffset hardwareCursor hasChanged savedPatch userInitials lastEventBuffer genieGestureProcessor keyboardInterpreter'<br>
classVariableNames: 'CompositionWindowManager DoubleClickTime DragThreshold EventStats MinimalWheelDelta NewEventRules NormalCursor PasteBuffer SendMouseWheelToKeyboardFocus ShowEvents SynthesizeMouseWheelEvents'<br>
poolDictionaries: 'EventSensorConstants'<br>
category: 'Morphic-Kernel'!<br>
<br>
!HandMorph commentStamp: '<historical>' prior: 0!<br>
The cursor may be thought of as the HandMorph. The hand's submorphs hold anything being carried by dragging. <br>
<br>
There is some minimal support for multiple hands in the same world.!<br>
<br>
<br>
</blockquote></div>
</div></blockquote>
</div></body>