<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
</head>
<body dir="ltr">
<div id="divtagdefaultwrapper" style="font-size: 12pt; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;" dir="ltr">
<p>Hi Marcel, hi all,</p>
<p><br>
</p>
<p>
<form class="js-new-comment-form js-needs-timeline-marker-header" action="https://github.com/hpi-swa-lab/squeak/issue_comments" accept-charset="UTF-8" method="post" style="box-sizing: border-box; color: rgb(36, 41, 46); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji"; font-size: 14px;">
</p>
<div class="border-0 border-md timeline-comment timeline-comment--caret" style="box-sizing: border-box; border: 1px solid rgb(225, 228, 232); ">
<fieldset class="js-previewable-comment-form-fieldset min-width-0" style="box-sizing: border-box; border-width: 0px; border-style: initial; border-color: initial; margin: 0px; padding: 0px; min-width: 0px !important;">
<tab-container class="js-previewable-comment-form previewable-comment-form preview-selected" data-preview-url="/preview?markdown_unsupported=false&repository=187610127&subject=67&subject_type=Issue" style="box-sizing: border-box; display: block; ">
<div role="tabpanel" class="js-preview-panel overflow-auto border-bottom mx-0 my-3 mx-md-2 mb-md-2" tabindex="0" style="box-sizing: border-box; border-bottom: 1px solid rgb(225, 228, 232) !important; overflow: auto !important; margin: 16px 8px 8px !important; outline: none; box-shadow: none;">
<div class="comment js-suggested-changes-container" data-thread-side="" style="box-sizing: border-box; border: 0px;">
<div class="comment-body markdown-body js-preview-body" style="box-sizing: border-box; line-height: 1.5; overflow-wrap: break-word; width: 830px; padding: 4px 4px 16px; overflow: visible; background-color: initial; border-bottom: 1px solid rgb(225, 228, 232); min-height: 494px;">
<blockquote style="box-sizing: border-box; margin-top: 0px !important; margin-right: 0px; margin-bottom: 16px; margin-left: 0px; padding: 0px 1em; color: rgb(106, 115, 125); border-left: 0.25em solid rgb(223, 226, 229);">
<p style="box-sizing: border-box;">What's the strategy here? Which events do you want to catch? I think that only mouse-over (incl. enter/leave) events are problematic. For a generic solution, benchmarks are mandatory. Where are we standing at that front?</p>
</blockquote>
<p style="box-sizing: border-box; margin-bottom: 16px;">I think the big question is how generic we would like to be at this point. Beside mouse over/enter/leave events, dragMove events could be a problem, too (though we are planning not to expose them to any
 morph). Mouse wheel events, too, maybe, especially when they originally come from a touchpad or touch screen input. What is about window events? <code style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 11.9px; padding: 0.2em 0.4em; margin: 0px; background-color: rgba(27, 31, 35, 0.05); border-radius: 6px;">#windowMetricChange</code> and <code style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 11.9px; padding: 0.2em 0.4em; margin: 0px; background-color: rgba(27, 31, 35, 0.05); border-radius: 6px;">#windowPaint</code> can
 be signaled with a high frequency, and when a host system such as Windows is mad again, <code style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 11.9px; padding: 0.2em 0.4em; margin: 0px; background-color: rgba(27, 31, 35, 0.05); border-radius: 6px;">#windowActivated</code>,
 too. So in my inbox proposal, I covered all kinds of events and overwrote a <code style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 11.9px; padding: 0.2em 0.4em; margin: 0px; background-color: rgba(27, 31, 35, 0.05); border-radius: 6px;">#isHighFrequentEvent</code> getter
 for certain event classes that are known not to be recorded very high-frequently (so basically, an allow list instead of a ban list).</p>
<p style="box-sizing: border-box; margin-bottom: 16px;">I have been testing these changes for a few months in my image now, and while I did not experience any further debugger chains, there was a quite small number of sporadic false positives, for instance,
 after switching a project, but unfortunately, I did not take notes about them and probably there is a relationship to any other change in my working copy. :-( In my personal doIt list, I have added the two following lines for quickly fixing the problem:</p>
<div class="highlight highlight-source-smalltalk" style="box-sizing: border-box; margin-bottom: 16px; background-color: initial; overflow: visible !important;">
<pre style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 11.9px; margin-top: 0px; margin-bottom: 0px; overflow-wrap: normal; padding: 16px; overflow: auto; line-height: 1.45; background-color: rgb(246, 248, 250); border-radius: 6px; word-break: normal;"><span class="pl-c1" style="box-sizing: border-box; color: rgb(0, 92, 197);">World</span> <span class="pl-c1" style="box-sizing: border-box; color: rgb(0, 92, 197);">allMorphsDo:</span> <span class="pl-c1" style="box-sizing: border-box; color: rgb(0, 92, 197);">#resumeAfterEventError</span>.
<span class="pl-c1" style="box-sizing: border-box; color: rgb(0, 92, 197);">World</span> <span class="pl-c1" style="box-sizing: border-box; color: rgb(0, 92, 197);">allMorphsDo:</span> <span class="pl-c1" style="box-sizing: border-box; color: rgb(0, 92, 197);">#resumeAfterDrawError</span>.</pre>
</div>
<p style="box-sizing: border-box; margin-bottom: 16px;">However, I'm still wondering about a frequency-based debugger detection that could record the last let's say 5 debugger invocation times and if they have been too close, another warning could be displayed.
 This approach would be less technical but better aligned with the actual purpose of this proposal, which is to prevent a long chain of debuggers overflowing the user. Here is a short, hacked implementation of such a feature for the StandardToolSet:</p>
<div class="highlight highlight-source-diff" style="box-sizing: border-box; margin-bottom: 16px; background-color: initial; overflow: visible !important;">
<pre style="box-sizing: border-box; font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, monospace; font-size: 11.9px; margin-top: 0px; margin-bottom: 0px; overflow-wrap: normal; padding: 16px; overflow: auto; line-height: 1.45; background-color: rgb(246, 248, 250); border-radius: 6px; word-break: normal;"> initialize
 
<span class="pl-mi1" style="box-sizing: border-box; color: rgb(34, 134, 58); background-color: rgb(240, 255, 244);"><span class="pl-mi1" style="box-sizing: border-box;">+</span> RecentDebuggersMutex := Semaphore forMutualExclusion.</span>
<span class="pl-mi1" style="box-sizing: border-box; color: rgb(34, 134, 58); background-color: rgb(240, 255, 244);"><span class="pl-mi1" style="box-sizing: border-box;">+</span> RecentDebuggers := OrderedCollection new.</span>
<span class="pl-mi1" style="box-sizing: border-box; color: rgb(34, 134, 58); background-color: rgb(240, 255, 244);"><span class="pl-mi1" style="box-sizing: border-box;">+</span> 5 timesRepeat: [RecentDebuggers addFirst: DateAndTime new].</span>
        ToolSet register: self.

 debugProcess: aProcess context: aContext label: aString contents: contents fullView: aBool
 
<span class="pl-mi1" style="box-sizing: border-box; color: rgb(34, 134, 58); background-color: rgb(240, 255, 244);"><span class="pl-mi1" style="box-sizing: border-box;">+</span> | now |</span>
        (aProcess isTerminated and: [aString beginsWith: 'Debug it']) ifTrue: [
                ^ Project uiManager inform: 'Nothing to debug. Process has terminated.\Expression optimized.' withCRs translated].
 
<span class="pl-mi1" style="box-sizing: border-box; color: rgb(34, 134, 58); background-color: rgb(240, 255, 244);"><span class="pl-mi1" style="box-sizing: border-box;">+</span> now := DateAndTime now.</span>
<span class="pl-mi1" style="box-sizing: border-box; color: rgb(34, 134, 58); background-color: rgb(240, 255, 244);"><span class="pl-mi1" style="box-sizing: border-box;">+</span> (RecentDebuggersMutex critical: [RecentDebuggers notEmpty ifTrue: [RecentDebuggers removeLast]]) ifNotNil: [:time |</span>
<span class="pl-mi1" style="box-sizing: border-box; color: rgb(34, 134, 58); background-color: rgb(240, 255, 244);"><span class="pl-mi1" style="box-sizing: border-box;">+</span>         now - time < 1 second ifTrue: [</span>
<span class="pl-mi1" style="box-sizing: border-box; color: rgb(34, 134, 58); background-color: rgb(240, 255, 244);"><span class="pl-mi1" style="box-sizing: border-box;">+</span>                 DebuggerOverflow</span>
<span class="pl-mi1" style="box-sizing: border-box; color: rgb(34, 134, 58); background-color: rgb(240, 255, 244);"><span class="pl-mi1" style="box-sizing: border-box;">+</span>                         ifNil: [</span>
<span class="pl-mi1" style="box-sizing: border-box; color: rgb(34, 134, 58); background-color: rgb(240, 255, 244);"><span class="pl-mi1" style="box-sizing: border-box;">+</span>                                 [DebuggerOverflow := Semaphore new.</span>
<span class="pl-mi1" style="box-sizing: border-box; color: rgb(34, 134, 58); background-color: rgb(240, 255, 244);"><span class="pl-mi1" style="box-sizing: border-box;">+</span>                                 (Project uiManager confirm: 'A lot of debuggers has been detected in recent past. Would you like to suppress further debuggers?' translated)</span>
<span class="pl-mi1" style="box-sizing: border-box; color: rgb(34, 134, 58); background-color: rgb(240, 255, 244);"><span class="pl-mi1" style="box-sizing: border-box;">+</span>                                         ifTrue: [self suppressDebuggers]]</span>
<span class="pl-mi1" style="box-sizing: border-box; color: rgb(34, 134, 58); background-color: rgb(240, 255, 244);"><span class="pl-mi1" style="box-sizing: border-box;">+</span>                                         ensure: [</span>
<span class="pl-mi1" style="box-sizing: border-box; color: rgb(34, 134, 58); background-color: rgb(240, 255, 244);"><span class="pl-mi1" style="box-sizing: border-box;">+</span>                                                 DebuggerOverflow signal.</span>
<span class="pl-mi1" style="box-sizing: border-box; color: rgb(34, 134, 58); background-color: rgb(240, 255, 244);"><span class="pl-mi1" style="box-sizing: border-box;">+</span>                                                 DebuggerOverflow := nil]]</span>
<span class="pl-mi1" style="box-sizing: border-box; color: rgb(34, 134, 58); background-color: rgb(240, 255, 244);"><span class="pl-mi1" style="box-sizing: border-box;">+</span>                         ifNotNil: [:sem |</span>
<span class="pl-mi1" style="box-sizing: border-box; color: rgb(34, 134, 58); background-color: rgb(240, 255, 244);"><span class="pl-mi1" style="box-sizing: border-box;">+</span>                                 sem wait]</span>
<span class="pl-mi1" style="box-sizing: border-box; color: rgb(34, 134, 58); background-color: rgb(240, 255, 244);"><span class="pl-mi1" style="box-sizing: border-box;">+</span>                 ]].</span>
<span class="pl-mi1" style="box-sizing: border-box; color: rgb(34, 134, 58); background-color: rgb(240, 255, 244);"><span class="pl-mi1" style="box-sizing: border-box;">+</span> RecentDebuggersMutex critical: [RecentDebuggers addFirst: now].</span>
<span class="pl-mi1" style="box-sizing: border-box; color: rgb(34, 134, 58); background-color: rgb(240, 255, 244);"><span class="pl-mi1" style="box-sizing: border-box;">+</span> self flag: #todo. "'Mutex' is not always signaled correctly"</span>
<span class="pl-mi1" style="box-sizing: border-box; color: rgb(34, 134, 58); background-color: rgb(240, 255, 244);"><span class="pl-mi1" style="box-sizing: border-box;">+</span> </span>
<span class="pl-mi1" style="box-sizing: border-box; color: rgb(34, 134, 58); background-color: rgb(240, 255, 244);"><span class="pl-mi1" style="box-sizing: border-box;">+</span> (self shouldSuppressDebuggers ==> [Project uiManager</span>
<span class="pl-mi1" style="box-sizing: border-box; color: rgb(34, 134, 58); background-color: rgb(240, 255, 244);"><span class="pl-mi1" style="box-sizing: border-box;">+</span>         confirm: ('This will open a Debugger:\\{1}\{2}\{3}\\Proceed?' withCRs translated format: {</span>
<span class="pl-mi1" style="box-sizing: border-box; color: rgb(34, 134, 58); background-color: rgb(240, 255, 244);"><span class="pl-mi1" style="box-sizing: border-box;">+</span>                 aProcess. aContext. contents })</span>
<span class="pl-mi1" style="box-sizing: border-box; color: rgb(34, 134, 58); background-color: rgb(240, 255, 244);"><span class="pl-mi1" style="box-sizing: border-box;">+</span>         title: aString])</span>
<span class="pl-mi1" style="box-sizing: border-box; color: rgb(34, 134, 58); background-color: rgb(240, 255, 244);"><span class="pl-mi1" style="box-sizing: border-box;">+</span>                 ifFalse: [aProcess terminate. ^ self].</span>
        
        ^ Debugger
                openOn: aProcess
                context: aContext
                label: aString
                contents: contents
                fullView: aBool</pre>
</div>
<p style="box-sizing: border-box;">This has saved my image two or three times, too, but on the contrary, the quality of such a heuristic may be questionary ...</p>
<p style="box-sizing: border-box;"><br>
</p>
<p style="box-sizing: border-box;">Looking forward to your opinions! :-)</p>
<p style="box-sizing: border-box;"></p>
</div>
</div>
</div>
</tab-container></fieldset></div>
</form>
<p></p>
<p><br>
</p>
<p>Best,</p>
<p>Christoph</p>
<br>
<div style="color: rgb(0, 0, 0);">
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" color="#000000" style="font-size:11pt"><b>Von:</b> Squeak-dev <squeak-dev-bounces@lists.squeakfoundation.org> im Auftrag von Taeumel, Marcel<br>
<b>Gesendet:</b> Montag, 8. Juni 2020 12:07 Uhr<br>
<b>An:</b> squeak-dev<br>
<b>Betreff:</b> Re: [squeak-dev] The Inbox: Morphic-ct.1641.mcz</font>
<div> </div>
</div>
<div>
<div id="__MailbirdStyleContent" style="font-size:10pt; font-family:Arial; color:#000000">
> <span style="font-family:Calibri,Helvetica,sans-serif; font-size:16px">Everything: </span><a href="http://forum.world.st/template/NamlServlet.jtp?macro=search_page&node=45488&query=doSafely&sort=date" class="OWAAutoLink" id="LPlnk864293" title="Klicken, um in einem neuen Fenster oder Tab zu öffnen
http://forum.world.st/template/NamlServlet.jtp?macro=search_page&node=45488&query=doSafely&sort=date" style="font-family:Calibri,Helvetica,sans-serif; font-size:16px" previewremoved="true">http://forum.world.st/template/NamlServlet.jtp?macro=search_page&node=45488&query=doSafely&sort=date</a><span style="font-family:Calibri,Helvetica,sans-serif; font-size:16px"> ;-)</span>
<div><span style="font-family:Calibri,Helvetica,sans-serif; font-size:16px"><br>
</span></div>
<div><span style="font-family:Calibri,Helvetica,sans-serif; font-size:16px">Are those just pointers to your commit messages?</span></div>
<div><span style="font-family:Calibri,Helvetica,sans-serif; font-size:16px"><br>
</span></div>
<div><span style="font-family:Calibri,Helvetica,sans-serif; font-size:16px">Best,</span></div>
<div><span style="font-family:Calibri,Helvetica,sans-serif; font-size:16px">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 08.06.2020 12:01:54 schrieb Thiede, Christoph <christoph.thiede@student.hpi.uni-potsdam.de>:</p>
<div style="font-family:Arial,Helvetica,sans-serif">
<div id="divtagdefaultwrapper" dir="ltr" style="font-size: 12pt; color: rgb(0, 0, 0); font-family: Calibri, Helvetica, sans-serif, EmojiFont, "Apple Color Emoji", "Segoe UI Emoji", NotoColorEmoji, "Segoe UI Symbol", "Android Emoji", EmojiSymbols;">
<p>Hi Marcel,</p>
<p><br>
</p>
<p>thank you! :-)</p>
<p><br>
</p>
<p>Discussion: <a href="http://forum.world.st/bug-in-a-ToolBuilder-Squeak5-3rc2-td5112536.html#a5112551" class="OWAAutoLink" id="LPlnk872821" previewremoved="true">http://forum.world.st/bug-in-a-ToolBuilder-Squeak5-3rc2-td5112536.html#a5112551</a><br>
Inbox: Morphic-ct.1636, Morphic-ct.1638, Morphic-ct.1641</p>
<p><br>
</p>
<p>Everything: <a href="http://forum.world.st/template/NamlServlet.jtp?macro=search_page&node=45488&query=doSafely&sort=date" class="OWAAutoLink" id="LPlnk864293" previewremoved="true">http://forum.world.st/template/NamlServlet.jtp?macro=search_page&node=45488&query=doSafely&sort=date</a> ;-)</p>
<p><br>
</p>
<p>Best,</p>
<p>Christoph</p>
<div id="Signature">
<div id="divtagdefaultwrapper" dir="ltr" style="font-size:12pt; color:rgb(0,0,0); font-family:Calibri,Helvetica,sans-serif,EmojiFont,"Apple Color Emoji","Segoe UI Emoji",NotoColorEmoji,"Segoe UI Symbol","Android Emoji",EmojiSymbols">
<div name="divtagdefaultwrapper" style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:; margin:0">
<div>
<div class="_rp_T4" id="Item.MessagePartBody">
<div class="_rp_U4 ms-font-weight-regular ms-font-color-neutralDark rpHighlightAllClass rpHighlightBodyClass" id="Item.MessageUniqueBody" style="font-family:wf_segoe-ui_normal,"Segoe UI","Segoe WP",Tahoma,Arial,sans-serif,serif,EmojiFont">
<div dir="ltr">
<div id="divtagdefaultwrapper"><span style="font-family:Calibri,Helvetica,sans-serif,EmojiFont,Apple Color Emoji,Segoe UI Emoji,NotoColorEmoji,Segoe UI Symbol,Android Emoji,EmojiSymbols">
<div id="Signature">
<div style="margin:0px"><font style="font-family:Calibri,Arial,Helvetica,sans-serif,serif,EmojiFont">
<div><font size="3" color="black"><span style="font-size:12pt"><a href="http://www.hpi.de/" target="_blank" rel="noopener noreferrer" id="LPNoLP"><font size="2"><span id="LPlnk909538"><font color="#757B80"></font></span></font></a></span></font></div>
</font></div>
</div>
</span></div>
</div>
</div>
</div>
</div>
<div><span style="font-size:10pt; color:#808080"></span></div>
</div>
</div>
</div>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="divRplyFwdMsg" dir="ltr"><span style="font-family:Calibri,sans-serif; color:#000000"><b>Von:</b> Squeak-dev <squeak-dev-bounces@lists.squeakfoundation.org> im Auftrag von Taeumel, Marcel<br>
<b>Gesendet:</b> Montag, 8. Juni 2020 11:52:32<br>
<b>An:</b> squeak-dev<br>
<b>Betreff:</b> Re: [squeak-dev] The Inbox: Morphic-ct.1641.mcz</span>
<div> </div>
</div>
<div>
<div id="__MailbirdStyleContent" style="font-size:10pt; font-family:Arial; color:#000000">
Hi Christoph,
<div><br>
</div>
<div>can you point me to the prior inbox artifacts and list discussions/comments about this "safe event processing"? I would really like to take a look at it. Having some safety net for broken #mouseOver: handlers similar to #displayWorldSafely: would really
 help debugging.</div>
<div><br>
</div>
<div>Best,</div>
<div>Marcel</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 07.06.2020 14:46:14 schrieb commits@source.squeak.org <commits@source.squeak.org>:</p>
<div style="font-family:Arial,Helvetica,sans-serif">Christoph Thiede uploaded a new version of Morphic to project The Inbox:<br>
http://source.squeak.org/inbox/Morphic-ct.1641.mcz<br>
<br>
==================== Summary ====================<br>
<br>
Name: Morphic-ct.1641<br>
Author: ct<br>
Time: 7 June 2020, 2:45:17.536284 pm<br>
UUID: b90e23e1-ce70-3d49-a8e4-f09af148ef97<br>
Ancestors: Morphic-ct.1638<br>
<br>
Refine #isHighFrequentEvent implementation for further event types. Fixes one possible cause of the "color depth = 0" bug. See http://forum.world.st/Image-not-startable-after-save-td5117084.html.<br>
<br>
Depends indeed on Morphic-ct.1638.<br>
<br>
=============== Diff against Morphic-ct.1638 ===============<br>
<br>
Item was added:<br>
+ ----- Method: DropEvent>>isHighFrequentEvent (in category 'testing') -----<br>
+ isHighFrequentEvent<br>
+ <br>
+ ^ false!<br>
<br>
Item was added:<br>
+ ----- Method: WindowEvent>>isHighFrequentEvent (in category 'testing') -----<br>
+ isHighFrequentEvent<br>
+ <br>
+ ^ (#(windowClose) includes: self type) not!<br>
<br>
Item was changed:<br>
----- Method: WorldState>>doSafely:onErrorThat:setErrorFlag:ifFatal:afterErrorDo: (in category 'update cycle') -----<br>
doSafely: aBlock onErrorThat: errorPredicate setErrorFlag: errorFlag ifFatal: fatalErrorBlock afterErrorDo: postErrorBlock<br>
"Evaluate aBlock and keep track of errors during morph invocations."<br>
<br>
| finished classesWithErrors |<br>
finished := false.<br>
classesWithErrors := IdentitySet new.<br>
[finished] whileFalse: [<br>
[aBlock value. finished := true] on: Error, Halt, Warning do: [:ex |<br>
| err rcvr errCtxt errMorph |<br>
(errorPredicate cull: ex)<br>
ifFalse: [ex pass].<br>
err := ex description.<br>
rcvr := ex receiver.<br>
<br>
errCtxt := thisContext.<br>
[<br>
errCtxt := errCtxt sender.<br>
"Search the sender chain to find the morph causing the problem"<br>
[errCtxt notNil and: [(errCtxt receiver isMorph) not]] <br>
whileTrue: [errCtxt := errCtxt sender].<br>
"If we're at the root of the context chain then we have a fatal problem"<br>
errCtxt ifNil: [^ fatalErrorBlock cull: err].<br>
+ errMorph := errCtxt receiver<br>
+ ] doWhileTrue: [<br>
- errMorph := errCtxt receiver.<br>
"If the morph causing the problem has already the error flag set, then search for the next morph above in the caller chain."<br>
errMorph hasProperty: errorFlag<br>
+ ].<br>
- ] whileTrue.<br>
errMorph<br>
setProperty: errorFlag toValue: true;<br>
changed.<br>
<br>
"Catch all errors, one for each receiver class."<br>
(classesWithErrors includes: rcvr class) ifFalse: [<br>
classesWithErrors add: rcvr class.<br>
ToolSet debugException: ex].<br>
<br>
postErrorBlock cull: err.<br>
]].!<br>
<br>
Item was changed:<br>
----- Method: WorldState>>processEventsSafely: (in category 'update cycle') -----<br>
processEventsSafely: aHandMorph<br>
<br>
^ self<br>
doSafely: [aHandMorph processEvents]<br>
+ onErrorThat: [:error | self currentEvent ifNil: [true] ifNotNil: [:evt | evt isHighFrequentEvent]]<br>
- onErrorThat: [:error | ActiveEvent isNil or: [ActiveEvent isHighFrequentEvent]]<br>
setErrorFlag: #errorOnEvent<br>
ifFatal: [:error | Project current fatalEventHandlingError: error]<br>
afterErrorDo: []!<br>
<br>
<br>
</div>
</blockquote>
</div>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</body>
</html>