<div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000">
Hi all!<div><br></div><div>I backported the fix to 5.3, 5.2, and 5.1.</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;min-width: 500px">
<p style="color: #AAAAAA; margin-top: 10px;">Am 14.08.2020 13:35:45 schrieb commits@source.squeak.org <commits@source.squeak.org>:</p><div style="font-family:Arial,Helvetica,sans-serif">Marcel Taeumel uploaded a new version of Morphic to project The Trunk:<br>http://source.squeak.org/trunk/Morphic-mt.1674.mcz<br><br>==================== Summary ====================<br><br>Name: Morphic-mt.1674<br>Author: mt<br>Time: 14 August 2020, 1:35:28.120535 pm<br>UUID: 9b6b3a33-4993-437b-b180-606d9be16223<br>Ancestors: Morphic-mt.1673<br><br>Fixes test12CustomEventDispatcher as reported:<br><br>- https://smalltalk.tech.blog/2020/08/10/smalltalks-successor/<br>- http://forum.world.st/A-Sad-Day-tp5120519.html<br><br>This also increases the robustess when loading code that overrides #processEvent: or #processEvent:using: without returning an event object but self.<br><br>=============== Diff against Morphic-mt.1673 ===============<br><br>Item was changed:<br> ----- Method: MorphicEventDispatcher>>dispatchEvent:toSubmorphsOf: (in category 'support') -----<br> dispatchEvent: anEvent toSubmorphsOf: aMorph<br> "Dispatch the given event to the submorphs of the given morph. For coordinate transformations, work only with copies. Either return the given event or a copy of any filtered event to employ immutability to some extent. --- PRIVATE!!"<br> <br> | localEvent filteredEvent | <br> aMorph submorphsDo: [:child |<br> localEvent := anEvent transformedBy: (child transformedFrom: aMorph).<br>+ filteredEvent := child processEvent: localEvent.<br>+ filteredEvent == #rejected ifFalse: [ "some event or #rejected symbol or any other object"<br>+ filteredEvent isMorphicEvent ifFalse: [filteredEvent := localEvent]. <br>- filteredEvent := child<br>- processEvent: localEvent<br>- using: self. "use same dispatcher"<br>- filteredEvent == #rejected ifFalse: [ "some event or #rejected symbol"<br> self flag: #overlappingChildren. "mt: We cannot give two overlapping siblings the chance to handle the event!!" <br> ^ self nextFromOriginal: anEvent local: localEvent filtered: filteredEvent]].<br> <br> ^ #rejected!<br><br><br></div></blockquote></div>