<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:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
<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 all! :-)</p>
<p><br>
</p>
<meta content="text/html; charset=UTF-8">
<div dir="ltr">
<div id="x_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>Here's a bug that still spawns endless morphic debuggers despite the patch from below:</p>
<p><br>
</p>
</div>
</div>
</div>
<blockquote style="margin: 0 0 0 40px; border: none; padding: 0px;">
<div 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 dir="ltr">
<div 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>Rotate a menu item and hover it. Your image will stop working!</p>
</div>
</div>
</div>
<div 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 dir="ltr">
<div 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><img naturalheight="181" naturalwidth="286" size="10623" id="x_img131955" tabindex="0" style="max-width: 99.9%; user-select: none;" src="cid:decc3db2-3dce-4bf4-863e-bac20e27c36b"></p>
</div>
</div>
</div>
</blockquote>
<div 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 dir="ltr">
<div 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><br>
(I actually fixed this bug in my image, but it requires so many redirections of #owner that I'm not sure whether this is good for Trunk.)</p>
<div id="x_Signature">
<div id="x_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="x_divtagdefaultwrapper" style="font-family:Calibri,Arial,Helvetica,sans-serif; font-size:; margin:0">
<div>
<div class="x__rp_T4" id="x_Item.MessagePartBody">
<div class="x__rp_U4 x_ms-font-weight-regular x_ms-font-color-neutralDark x_rpHighlightAllClass x_rpHighlightBodyClass" id="x_Item.MessageUniqueBody" style="font-family:wf_segoe-ui_normal,"Segoe UI","Segoe WP",Tahoma,Arial,sans-serif,serif,EmojiFont">
<div dir="ltr">
<div id="x_divtagdefaultwrapper"><font face="Calibri,Helvetica,sans-serif,EmojiFont,Apple Color Emoji,Segoe UI Emoji,NotoColorEmoji,Segoe UI Symbol,Android Emoji,EmojiSymbols">
<div id="x_Signature">
<div style="margin:0px"><font style="font-family:Calibri,Arial,Helvetica,sans-serif,serif,EmojiFont"></font></div>
</div>
</font></div>
</div>
</div>
</div>
<div class="x__rp_T4" id="x_Item.MessagePartBody"><br>
</div>
<div class="x__rp_T4" id="x_Item.MessagePartBody">However, the problem is that in #<span>processEventsSafely:, ActiveEvent does not contain the mouseOver event but still a past mouseUp event (which is not high frequent). This leads me to the following question:</span></div>
<div class="x__rp_T4" id="x_Item.MessagePartBody"><span>Why is #becomeActiveDuring: only sent from #<span>sendEvent:focus:clear: but not from HandMorph >> #handleEvent: directly? If mouseEnter/mouseLeave events are sent via #<span>processMouseOver:, ActiveEvent
 is not updated. This feels strange to me ... Is this actually a desired behavior? :-)</span></span></span></div>
<div class="x__rp_T4" id="x_Item.MessagePartBody"><span><span><span><br>
</span></span></span></div>
<div class="x__rp_T4" id="x_Item.MessagePartBody"><span><span><span>Best,</span></span></span></div>
<div class="x__rp_T4" id="x_Item.MessagePartBody"><span><span><span>Christoph</span></span></span></div>
</div>
<div><font size="2" color="#808080"></font></div>
</div>
</div>
</div>
</div>
<hr tabindex="-1" style="display:inline-block; width:98%">
<div id="x_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 commits@source.squeak.org <commits@source.squeak.org><br>
<b>Gesendet:</b> Montag, 2. März 2020 12:23:27<br>
<b>An:</b> squeak-dev@lists.squeakfoundation.org<br>
<b>Betreff:</b> [squeak-dev] The Inbox: Morphic-ct.1638.mcz</font>
<div> </div>
</div>
</div>
<font size="2"><span style="font-size:10pt">
<div class="PlainText">Christoph Thiede uploaded a new version of Morphic to project The Inbox:<br>
<a href="http://source.squeak.org/inbox/Morphic-ct.1638.mcz" id="LPlnk258408" previewremoved="true">http://source.squeak.org/inbox/Morphic-ct.1638.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: Morphic-ct.1638<br>
Author: ct<br>
Time: 2 March 2020, 12:23:17.762949 pm<br>
UUID: ade6a3af-6505-5e49-816d-b9940db95e25<br>
Ancestors: Morphic-ct.1636<br>
<br>
Slightly refines previous commit. Depends indeed on Morphic-ct.1636.<br>
<br>
(Sorry for all the noise! We could really need some kind of branch concept ...)<br>
<br>
=============== Diff against Morphic-ct.1636 ===============<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>
                                 "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>
                         ] whileTrue.<br>
+                        errMorph<br>
+                                setProperty: errorFlag toValue: true;<br>
+                                changed.<br>
-                        errMorph setProperty: errorFlag toValue: true.<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 | ActiveEvent isNil or: [ActiveEvent isHighFrequentEvent]]<br>
-                onErrorThat: [:error | ActiveEvent isHighFrequentEvent]<br>
                 setErrorFlag: #errorOnEvent<br>
                 ifFatal: [:error | Project current fatalEventHandlingError: error]<br>
                 afterErrorDo: []!<br>
<br>
<br>
</div>
</span></font></div>
</div>
</body>
</html>