Marcel Taeumel uploaded a new version of Morphic to project The Trunk: http://source.squeak.org/trunk/Morphic-mt.1583.mcz
==================== Summary ====================
Name: Morphic-mt.1583 Author: mt Time: 29 October 2019, 3:09:10.326172 pm UUID: 2724b1c3-9a13-1c4f-811f-a5bbc8ed76e1 Ancestors: Morphic-mt.1582
Make it possible to recover from (deprecation) warnings in important drawing methods.
See http://forum.world.st/The-Trunk-System-mt-1093-mcz-tp5103937p5106420.html
=============== Diff against Morphic-mt.1582 ===============
Item was changed: ----- Method: WorldState>>displayWorldSafely: (in category 'update cycle') ----- displayWorldSafely: aWorld "Update this world's display and keep track of errors during draw methods."
| finished classesWithErrors | finished := false. [finished] whileFalse: [ + [aWorld displayWorld. finished := true] on: Error, Halt, Warning do: [:ex | - [aWorld displayWorld. finished := true] on: Error, Halt do: [:ex | "Handle a drawing error" | err rcvr errCtx errMorph | err := ex description. rcvr := ex receiver.
errCtx := thisContext. [ errCtx := errCtx sender. "Search the sender chain to find the morph causing the problem" [errCtx notNil and:[(errCtx receiver isMorph) not]] whileTrue:[errCtx := errCtx sender]. "If we're at the root of the context chain then we have a fatal drawing problem" errCtx ifNil:[^Project current fatalDrawingError: err]. errMorph := errCtx receiver. "If the morph causing the problem has already the #drawError flag set, then search for the next morph above in the caller chain." errMorph hasProperty: #errorOnDraw ] whileTrue. errMorph setProperty: #errorOnDraw toValue: true.
"Catch all errors, one for each receiver class." classesWithErrors ifNil: [classesWithErrors := IdentitySet new]. (classesWithErrors includes: rcvr class) ifFalse: [ classesWithErrors add: rcvr class. ToolSet debugException: ex].
"Repaint all to catch all errors now and not if the debugger will appear." aWorld fullRepaintNeeded. ]].!
packages@lists.squeakfoundation.org