<div dir="ltr">In the Etoys image we found a very old bug in morphic that I&#39;m not sure how to fix. <div><br></div><div>You can test it by trying to rotate a FlapTab in any Squeak image older than 3.1b.<div><br><div>For a very hard image lockup try rotating the FlapTab with the flap open.</div>
<div style>Then opening the debugger fails also.</div><div><div style><br></div><div style>The bug appeared between images Squeak 3.1b and Squeak 3.2 so it has been around a while.</div></div><div style><br></div><div style>
The bug is with creating a TransformationMorph  that has fullBounds nil.</div><div style><br></div><div style>TransformMorph overrides fullBounds:</div><div style><br></div><div style><div><span class="" style="white-space:pre">        </span>fullBounds ifNotNil:[^ fullBounds].</div>
<div><span class="" style="white-space:pre">        </span>fullBounds := bounds.</div><div><span class="" style="white-space:pre">        </span>submorphs do: [:m| m ownerChanged].</div><div><span class="" style="white-space:pre">        </span>^ fullBounds</div>
<div><br></div><div style>Even if bounds are not nil, fullBounds gets nil&#39;ed again when calling submorphs ownerChanged.</div><div style><br></div><div style>Any hints and good solutions appreciated :-)</div><div style>
<br></div><div style>Karl</div></div></div></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Sun, Feb 3, 2013 at 9:18 PM, Karl Ramberg (JIRA) <span dir="ltr">&lt;<a href="mailto:tracker@squeakland.org" target="_blank">tracker@squeakland.org</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
    [ <a href="http://tracker.squeakland.org/browse/SQ-1119?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&amp;focusedCommentId=40892#action_40892" target="_blank">http://tracker.squeakland.org/browse/SQ-1119?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&amp;focusedCommentId=40892#action_40892</a> ]<br>

<br>
Karl Ramberg commented on SQ-1119:<br>
----------------------------------<br>
<br>
It is really the FlapTab that has some issues with rotation.<br>
<br>
Somehow the TransformationMorph fails with nil fullBounds.<br>
<br>
I&#39;m not sure how that can happen...<br>
<br>
<br>
VM: Win32 - a SmalltalkImage<br>
Image: etoys5.0 [latest update: #2409]<br>
<br>
<br>
UndefinedObject(Object)&gt;&gt;doesNotUnderstand: #hasPositiveExtent<br>
        Receiver: nil<br>
        Arguments and temporary variables:<br>
                aMessage:       hasPositiveExtent<br>
        Receiver&#39;s instance variables:<br>
nil<br>
<br>
TransformationMorph(Morph)&gt;&gt;invalidRect:from:<br>
        Receiver: a TransformationMorph(2153) on a FlapTab&lt;Flap&gt;(1211) &quot;My Flap&quot;<br>
        Arguments and temporary variables:<br>
                aRectangle:     nil<br>
                aMorph:         a TransformationMorph(2153) on a FlapTab&lt;Flap&gt;(1211) &quot;My Flap&quot;<br>
                damageRect:     nil<br>
        Receiver&#39;s instance variables:<br>
                bounds:         99@105 corner: 207@132<br>
                owner:  nil<br>
                submorphs:      #(a FlapTab&lt;Flap&gt;(1211) &quot;My Flap&quot;)<br>
                fullBounds:     nil<br>
                color:  Color lightGreen<br>
                extension:      nil<br>
                transform:      a MorphicTransform(angle = 0.0; scale = 1.0; offset = 0@0)<br>
                smoothing:      1<br>
                localBounds:    nil<br>
<br>
TransformationMorph(TransformMorph)&gt;&gt;invalidRect:from:<br>
        Receiver: a TransformationMorph(2153) on a FlapTab&lt;Flap&gt;(1211) &quot;My Flap&quot;<br>
        Arguments and temporary variables:<br>
                damageRect:     nil<br>
                aMorph:         a TransformationMorph(2153) on a FlapTab&lt;Flap&gt;(1211) &quot;My Flap&quot;<br>
        Receiver&#39;s instance variables:<br>
                bounds:         99@105 corner: 207@132<br>
                owner:  nil<br>
                submorphs:      #(a FlapTab&lt;Flap&gt;(1211) &quot;My Flap&quot;)<br>
                fullBounds:     nil<br>
                color:  Color lightGreen<br>
                extension:      nil<br>
                transform:      a MorphicTransform(angle = 0.0; scale = 1.0; offset = 0@0)<br>
                smoothing:      1<br>
                localBounds:    nil<br>
<br>
TransformationMorph(Morph)&gt;&gt;invalidRect:<br>
        Receiver: a TransformationMorph(2153) on a FlapTab&lt;Flap&gt;(1211) &quot;My Flap&quot;<br>
        Arguments and temporary variables:<br>
                damageRect:     nil<br>
        Receiver&#39;s instance variables:<br>
                bounds:         99@105 corner: 207@132<br>
                owner:  nil<br>
                submorphs:      #(a FlapTab&lt;Flap&gt;(1211) &quot;My Flap&quot;)<br>
                fullBounds:     nil<br>
                color:  Color lightGreen<br>
                extension:      nil<br>
                transform:      a MorphicTransform(angle = 0.0; scale = 1.0; offset = 0@0)<br>
                smoothing:      1<br>
                localBounds:    nil<br>
<br>
<br>
--- The full stack ---<br>
UndefinedObject(Object)&gt;&gt;doesNotUnderstand: #hasPositiveExtent<br>
TransformationMorph(Morph)&gt;&gt;invalidRect:from:<br>
TransformationMorph(TransformMorph)&gt;&gt;invalidRect:from:<br>
TransformationMorph(Morph)&gt;&gt;invalidRect:<br>
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<br>
TransformationMorph(Morph)&gt;&gt;position:<br>
TransformationMorph&gt;&gt;asFlexOf:<br>
FlapTab(Morph)&gt;&gt;addFlexShell<br>
FlapTab(Morph)&gt;&gt;addFlexShellIfNecessary<br>
HaloMorph&gt;&gt;startRot:with:<br>
EventHandler&gt;&gt;send:to:withEvent:fromMorph:<br>
EventHandler&gt;&gt;mouseDown:fromMorph:<br>
ThreePhaseButtonMorph(Morph)&gt;&gt;mouseDown:<br>
ThreePhaseButtonMorph&gt;&gt;mouseDown:<br>
ThreePhaseButtonMorph(Morph)&gt;&gt;handleMouseDown:<br>
MouseButtonEvent&gt;&gt;sentTo:<br>
ThreePhaseButtonMorph(Morph)&gt;&gt;handleEvent:<br>
MorphicEventDispatcher&gt;&gt;dispatchMouseDown:with:<br>
MorphicEventDispatcher&gt;&gt;dispatchEvent:with:<br>
ThreePhaseButtonMorph(Morph)&gt;&gt;processEvent:using:<br>
MorphicEventDispatcher&gt;&gt;dispatchMouseDown:with:<br>
MorphicEventDispatcher&gt;&gt;dispatchEvent:with:<br>
HaloMorph(Morph)&gt;&gt;processEvent:using:<br>
MorphicEventDispatcher&gt;&gt;dispatchMouseDown:with:<br>
MorphicEventDispatcher&gt;&gt;dispatchEvent:with:<br>
PasteUpMorph(Morph)&gt;&gt;processEvent:using:<br>
PasteUpMorph&gt;&gt;processEvent:using:<br>
PasteUpMorph(Morph)&gt;&gt;processEvent:<br>
HandMorph&gt;&gt;sendEvent:focus:clear:<br>
HandMorph&gt;&gt;sendMouseEvent:<br>
HandMorph&gt;&gt;handleEvent:<br>
HandMorph&gt;&gt;processEvents<br>
[] in WorldState&gt;&gt;doOneCycleNowFor: {[:h |  ActiveHand := h.  h processEvents.  capturingGesture := capturingGest...]}<br>
Array(SequenceableCollection)&gt;&gt;do:<br>
WorldState&gt;&gt;handsDo:<br>
WorldState&gt;&gt;doOneCycleNowFor:<br>
WorldState&gt;&gt;doOneCycleFor:<br>
PasteUpMorph&gt;&gt;doOneCycle<br>
[] in Project class&gt;&gt;spawnNewProcess {[[World doOneCycle.  Processor yield.  false] whileFalse.  nil]}<br>
[] in BlockContext&gt;&gt;newProcess {[self value.  Processor terminateActive]}<br>
<br>
<br>
&gt; Rotating flaps DNU and other mishaps<br>
&gt; ------------------------------------<br>
&gt;<br>
&gt;                 Key: SQ-1119<br>
&gt;                 URL: <a href="http://tracker.squeakland.org/browse/SQ-1119" target="_blank">http://tracker.squeakland.org/browse/SQ-1119</a><br>
&gt;             Project: squeakland<br>
&gt;          Issue Type: Bug<br>
&gt;          Components: etoys<br>
&gt;            Reporter: Karl Ramberg<br>
&gt;             Fix For: future release<br>
&gt;<br>
&gt;<br>
&gt; Most flaps can be rotated by rotation handle but none of them do this gracefully. Viewer flaps give DNU when collapsed and opened again. &#39;About&#39; flap leaves a green transformation morph on the desktop.<br>
&gt; Should we disable  the rotation handle for flaps ?<br>
&gt; I can&#39;t really see a use case for rotating a flap, except for a cool factor ;-)<br>
<span class="HOEnZb"><font color="#888888"><br>
--<br>
This message is automatically generated by JIRA.<br>
-<br>
If you think it was sent incorrectly contact one of the administrators: <a href="http://tracker.squeakland.org/secure/Administrators.jspa" target="_blank">http://tracker.squeakland.org/secure/Administrators.jspa</a><br>
-<br>
For more information on JIRA, see: <a href="http://www.atlassian.com/software/jira" target="_blank">http://www.atlassian.com/software/jira</a><br>
<br>
<br>
</font></span></blockquote></div><br></div>