<body><div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000">
> <span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">4. Ctrl plus stop brings you into an MVC project where you can revert</span><br style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">> the 'self halt'</span><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">That's a bug. :-D MVC should be entered automatically. There might be an issue in Project >> #</span><span style="font-family: Arial, Helvetica, sans-serif"><span style="font-size: 13px">enterForEmergencyRecovery.</span></span></div><div><br></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 15.10.2019 13:49:48 schrieb H. Hirzel <hannes.hirzel@gmail.com>:</p><div style="font-family:Arial,Helvetica,sans-serif">Hi Marcel<br><br>With this fix you did here, this test now passes<br><br>1. Image Squeak5.3alpha latest update: #19124<br>2. Put a 'self halt' into the LazyListMorph >> #drawOn: method<br>3. The lists get red with a yellow X in the System Brower.<br>4. Ctrl plus stop brings you into an MVC project where you can revert<br>the 'self halt'<br>5. Jump back to the original project.<br><br>Result: The Morphic project is fixed after an error which caused the<br>GUI to stop.<br><br>Regards<br>Hannes<br><br>On Tue, 15 Oct 2019 11:30:30 0000, commits@source.squeak.org<br><commits@source.squeak.org> wrote:<br>> Marcel Taeumel uploaded a new version of Morphic to project The Trunk:<br>> http://source.squeak.org/trunk/Morphic-mt.1575.mcz<br>><br>> ==================== Summary ====================<br>><br>> Name: Morphic-mt.1575<br>> Author: mt<br>> Time: 15 October 2019, 1:30:24.148785 pm<br>> UUID: c7bde074-ddad-864a-a5b3-8b078736fe2f<br>> Ancestors: Morphic-mt.1574<br>><br>> More robustness: (1) Catch both Error and Halt in Morphic drawing and (2)<br>> Reset drawing errors in morphs when restoring the Display.<br>><br>> =============== Diff against Morphic-mt.1574 ===============<br>><br>> Item was added:<br>> + ----- Method: MorphicProject>>restoreDisplay (in category 'scheduling &<br>> debugging') -----<br>> + restoreDisplay<br>> + "Give all morphs a chance to draw again."<br>> + self world ifNotNil: [:w | w allMorphsDo: [:ea | ea removeProperty:<br>> #errorOnDraw ]].<br>> +<br>> + super restoreDisplay.!<br>><br>> Item was changed:<br>> ----- Method: WorldState>>displayWorldSafely: (in category 'update cycle')<br>> -----<br>> displayWorldSafely: aWorld<br>> "Update this world's display and keep track of errors during draw<br>> methods."<br>><br>> | finished classesWithErrors |<br>> finished := false.<br>> <br>> [finished] whileFalse: [<br>> + [aWorld displayWorld. finished := true] on: Error, Halt do: [:ex |<br>> - [aWorld displayWorld. finished := true] on: Error do: [:ex |<br>> "Handle a drawing error"<br>> | err rcvr errCtx errMorph |<br>> err := ex description.<br>> rcvr := ex receiver.<br>><br>> errCtx := thisContext.<br>> [<br>> errCtx := errCtx sender.<br>> "Search the sender chain to find the morph causing the problem"<br>> [errCtx notNil and:[(errCtx receiver isMorph) not]]<br>> whileTrue:[errCtx := errCtx sender].<br>> "If we're at the root of the context chain then we have a fatal<br>> drawing problem"<br>> errCtx ifNil:[^Project current fatalDrawingError: err].<br>> errMorph := errCtx receiver.<br>> "If the morph causing the problem has already the #drawError flag set,<br>> then search for the next morph above in the caller chain."<br>> errMorph hasProperty: #errorOnDraw<br>> ] whileTrue.<br>> errMorph setProperty: #errorOnDraw toValue: true.<br>><br>> "Catch all errors, one for each receiver class."<br>> classesWithErrors ifNil: [classesWithErrors := IdentitySet new].<br>> (classesWithErrors includes: rcvr class) ifFalse: [<br>> classesWithErrors add: rcvr class.<br>> ToolSet debugException: ex].<br>><br>> "Repaint all to catch all errors now and not if the debugger will<br>> appear."<br>> aWorld fullRepaintNeeded.<br>> ]].!<br>><br>><br>><br><br></commits@source.squeak.org></div></blockquote>
</div></body>