<body><div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000">
                                        Even though I cannot solve this issue, I made some changes in Trunk to handle such empty transformation morphs more conveniently.<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 26.09.2019 09:41:10 schrieb Marcel Taeumel <marcel.taeumel@hpi.de>:</p><div style="font-family:Arial,Helvetica,sans-serif"><div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000">
                                        ... on second thought: Maybe it is not that easy:<div><br></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">| rect flex |</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">rect := RectangleMorph new openInWorld.</span><br style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">rect heading: 45.0.</span><br style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">flex := rect owner.</span></div><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">rect delete</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">flex add: Morph new.</span></div><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">... the flex should still be in the world, right?</span></div><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">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 26.09.2019 09:35:23 schrieb Marcel Taeumel <marcel.taeumel@hpi.de>:</p><div style="font-family:Arial,Helvetica,sans-serif"><div id="__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000">
                                        
                                        
                                            
                                        
                                        
                                        Hi Karl. :-)<div><br></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">> I still don’t get this. How is a flexShell different than a halo or a player?</span></div><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">- A halo is kind of a (context) menu for morphs in general.</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">- A flexShell is an instance of Transform<b>ation</b>Morph.</span></div><div><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">- A player is an etoys-specific thing to manage etoys scripts where costumes are the (maybe flexed) morphs.</span></div><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">If you rotate a system window and close that, the flex shell disappears as expected because of SystemWindow >> #delete. In this example, it does not: </span></div><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">rect := RectangleMorph new openInWorld.</span><br style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">rect heading: 45.0.</span><br style="font-family: Arial, Helvetica, sans-serif;font-size: 13px"><span style="font-family: Arial, Helvetica, sans-serif;font-size: 13px">rect delete.</span></div><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">Since ScrollPane uses TransformMorph and not TransformationMorph, we can safely implement #removedMorph: there and get rid of some #isFlexed or #isFlexMorph calls.</span></div><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">... we should rename "Transform<b>ation</b>Morph" to "FlexShell" at some point ...</span></div><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">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;min-width: 500px">
                        <p style="color: #AAAAAA; margin-top: 10px;">Am 26.09.2019 07:45:00 schrieb karl ramberg <karlramberg@gmail.com>:</p><div style="font-family:Arial,Helvetica,sans-serif">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><div><div dir="auto">I still don’t get this. How is a flexShell different than a halo or a player ?</div></div><div dir="auto">Best,</div><div dir="auto">Karl</div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, 24 Sep 2019 at 09:52, Marcel Taeumel <<a href="mailto:marcel.taeumel@hpi.de">marcel.taeumel@hpi.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin: 0 0 0 .8ex;border-left: 1px #ccc solid;padding-left: 1ex;min-width: 500px"><div id="m_-3350902062075294143__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000">
                                        
                                        
                                            
                                        
                                        
                                        <div>-1 :-)</div><div><br></div>Well, #delete should just delete the morph from its owner. That morph shouldn't care about other constraints *in* that owner. It makes things just too complicated.<div><br></div><div>If a flex shell (aka. transform morph) shouldn't lay around invisibly in a world, that world should take care of it ... or *maybe* the transform morph.</div><div><br></div><div>Think about scroll panes. There, it is okay to have an invisible transform morph  with no children (or submorphs).</div><div><br></div><div>Best,</div><div>Marcel</div></div><div id="m_-3350902062075294143__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: #000000"><div></div>
                                        
                                        <blockquote 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 24.09.2019 09:42:25 schrieb karl ramberg <<a href="mailto:karlramberg@gmail.com" target="_blank">karlramberg@gmail.com</a>>:</p><div style="font-family:Arial,Helvetica,sans-serif">
<div dir="ltr"><div>Here is another suggestion: <br></div><div><br></div><div>Morph>>delete</div> "Remove the receiver as a submorph of its owner and make its <br>    new owner be nil."<br>       | oldWorld |<br>  self removeHalo.<br>      self isFlexed ifTrue:[self removeFlexShell]. <br> (oldWorld := self world) ifNotNil: [<br>          self disableSubmorphFocusForHand: self activeHand.<br>            self activeHand<br>                  releaseKeyboardFocus: self;<br>                   releaseMouseFocus: self].<br>     owner ifNotNil: [<br>             self privateDelete. "remove from world"<br>             self player ifNotNil: [:player |<br>                      oldWorld ifNotNil: [<br><div>                               player noteDeletionOf: self fromWorld: oldWorld]]].</div><div><br></div><div>Best,</div><div>Karl<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Sep 24, 2019 at 9:21 AM Marcel Taeumel <<a href="mailto:marcel.taeumel@hpi.de" target="_blank">marcel.taeumel@hpi.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex;border-left: 1px solid rgb(204,204,204);padding-left: 1ex;min-width: 500px"><div><div id="m_-3350902062075294143gmail-m_54452701301215286__MailbirdStyleContent" style="font-size: 10pt;font-family: Arial;color: rgb(0,0,0)">
                                        <div>-1 for adding such a side effect to Morph >> #privateDelete.</div><div><br></div>What about adding TransformMorph >> #removedMorph: and checking for "self owner = self world"?<div><br></div><div>Best,</div><div>Marcel</div><div></div><blockquote 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:rgb(170,170,170);margin-top:10px">Am 23.09.2019 22:16:59 schrieb karl ramberg <<a href="mailto:karlramberg@gmail.com" target="_blank">karlramberg@gmail.com</a>>:</p><div style="font-family:Arial,Helvetica,sans-serif">
<div dir="ltr"><div>PS: I have made work around for this issue before in these places:</div><div><br></div><div>FlapTab privateDeleteReferent<br>MenuMorph delete<br>SystemWindow delete</div><div><br></div><div>Best,</div><div>Karl<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Sep 23, 2019 at 10:02 PM karl ramberg <<a href="mailto:karlramberg@gmail.com" target="_blank">karlramberg@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex;border-left: 1px solid rgb(204,204,204);padding-left: 1ex;min-width: 500px"><div dir="ltr"><div>I'm not sure if this is the right way to delete a flexed morph.</div><div>Somebody with a better understanding than me must check if this is the right way to do this.</div><div>Here is a test that leaves a green TransformationMorph before this change:</div><div> 
<a href="http://source.squeak.org/inbox/Morphic-kfr.1540.mcz" rel="noreferrer" target="_blank">http://source.squeak.org/inbox/Morphic-kfr.1540.mcz</a>

</div><div><br></div><div>rect := RectangleMorph new openInWorld.<br>rect heading: 45.0.<br>rect delete.</div><div><br></div><div>Best,</div><div>Karl.<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Sep 23, 2019 at 9:52 PM <<a href="mailto:commits@source.squeak.org" target="_blank">commits@source.squeak.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin: 0px 0px 0px 0.8ex;border-left: 1px solid rgb(204,204,204);padding-left: 1ex;min-width: 500px">A new version of Morphic was added to project The Inbox:<br>
<a href="http://source.squeak.org/inbox/Morphic-kfr.1540.mcz" rel="noreferrer" target="_blank">http://source.squeak.org/inbox/Morphic-kfr.1540.mcz</a><br>
<br>
==================== Summary ====================<br>
<br>
Name: Morphic-kfr.1540<br>
Author: kfr<br>
Time: 23 September 2019, 9:52:14.252115 pm<br>
UUID: 19e57221-4088-0f49-9549-22e1270e933b<br>
Ancestors: Morphic-mt.1539<br>
<br>
If a morph is flexed, it's owner must be deleted<br>
<br>
=============== Diff against Morphic-mt.1539 ===============<br>
<br>
Item was changed:<br>
  ----- Method: Morph>>privateDelete (in category 'submorphs-add/remove') -----<br>
  privateDelete<br>
        "Remove the receiver as a submorph of its owner"<br>
+       self isFlexed ifTrue:[^owner delete].<br>
        owner ifNotNil:[owner removeMorph: self].!<br>
<br>
<br>
</blockquote></div>
</blockquote></div>
</div></blockquote>
                                        </div></div><br>
</blockquote></div>
</div></blockquote></div><br>
</blockquote></div></div>
</div></blockquote></div></div></blockquote>
                                        </div></div></blockquote>
                                        </div></body>