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