<div dir="ltr">
 Morphic-nice.1615 fixes that, I should have put in TreatedInbox

</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le lun. 6 janv. 2020 à 13:52, Marcel Taeumel <<a href="mailto:marcel.taeumel@hpi.de">marcel.taeumel@hpi.de</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"><div><div id="gmail-m_-8905076820135237804__MailbirdStyleContent" style="font-size:10pt;font-family:Arial;color:rgb(0,0,0)">
                                        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" target="_blank"><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></div><blockquote type="cite" style="border-left-style:solid;border-width:1px;margin-top:20px;margin-left:0px;padding-left:10px">
                        <p style="color:rgb(170,170,170);margin-top:10px">Am 29.12.2019 23:47:46 schrieb Nicolas Cellier <<a href="mailto:nicolas.cellier.aka.nice@gmail.com" target="_blank">nicolas.cellier.aka.nice@gmail.com</a>>:</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" target="_blank">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></div><br>
</blockquote></div>