<div dir="ltr">In the Etoys image we found a very old bug in morphic that I'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'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"><<a href="mailto:tracker@squeakland.org" target="_blank">tracker@squeakland.org</a>></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&focusedCommentId=40892#action_40892" target="_blank">http://tracker.squeakland.org/browse/SQ-1119?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&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'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)>>doesNotUnderstand: #hasPositiveExtent<br>
Receiver: nil<br>
Arguments and temporary variables:<br>
aMessage: hasPositiveExtent<br>
Receiver's instance variables:<br>
nil<br>
<br>
TransformationMorph(Morph)>>invalidRect:from:<br>
Receiver: a TransformationMorph(2153) on a FlapTab<Flap>(1211) "My Flap"<br>
Arguments and temporary variables:<br>
aRectangle: nil<br>
aMorph: a TransformationMorph(2153) on a FlapTab<Flap>(1211) "My Flap"<br>
damageRect: nil<br>
Receiver's instance variables:<br>
bounds: 99@105 corner: 207@132<br>
owner: nil<br>
submorphs: #(a FlapTab<Flap>(1211) "My Flap")<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)>>invalidRect:from:<br>
Receiver: a TransformationMorph(2153) on a FlapTab<Flap>(1211) "My Flap"<br>
Arguments and temporary variables:<br>
damageRect: nil<br>
aMorph: a TransformationMorph(2153) on a FlapTab<Flap>(1211) "My Flap"<br>
Receiver's instance variables:<br>
bounds: 99@105 corner: 207@132<br>
owner: nil<br>
submorphs: #(a FlapTab<Flap>(1211) "My Flap")<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)>>invalidRect:<br>
Receiver: a TransformationMorph(2153) on a FlapTab<Flap>(1211) "My Flap"<br>
Arguments and temporary variables:<br>
damageRect: nil<br>
Receiver's instance variables:<br>
bounds: 99@105 corner: 207@132<br>
owner: nil<br>
submorphs: #(a FlapTab<Flap>(1211) "My Flap")<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)>>doesNotUnderstand: #hasPositiveExtent<br>
TransformationMorph(Morph)>>invalidRect:from:<br>
TransformationMorph(TransformMorph)>>invalidRect:from:<br>
TransformationMorph(Morph)>>invalidRect:<br>
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -<br>
TransformationMorph(Morph)>>position:<br>
TransformationMorph>>asFlexOf:<br>
FlapTab(Morph)>>addFlexShell<br>
FlapTab(Morph)>>addFlexShellIfNecessary<br>
HaloMorph>>startRot:with:<br>
EventHandler>>send:to:withEvent:fromMorph:<br>
EventHandler>>mouseDown:fromMorph:<br>
ThreePhaseButtonMorph(Morph)>>mouseDown:<br>
ThreePhaseButtonMorph>>mouseDown:<br>
ThreePhaseButtonMorph(Morph)>>handleMouseDown:<br>
MouseButtonEvent>>sentTo:<br>
ThreePhaseButtonMorph(Morph)>>handleEvent:<br>
MorphicEventDispatcher>>dispatchMouseDown:with:<br>
MorphicEventDispatcher>>dispatchEvent:with:<br>
ThreePhaseButtonMorph(Morph)>>processEvent:using:<br>
MorphicEventDispatcher>>dispatchMouseDown:with:<br>
MorphicEventDispatcher>>dispatchEvent:with:<br>
HaloMorph(Morph)>>processEvent:using:<br>
MorphicEventDispatcher>>dispatchMouseDown:with:<br>
MorphicEventDispatcher>>dispatchEvent:with:<br>
PasteUpMorph(Morph)>>processEvent:using:<br>
PasteUpMorph>>processEvent:using:<br>
PasteUpMorph(Morph)>>processEvent:<br>
HandMorph>>sendEvent:focus:clear:<br>
HandMorph>>sendMouseEvent:<br>
HandMorph>>handleEvent:<br>
HandMorph>>processEvents<br>
[] in WorldState>>doOneCycleNowFor: {[:h | ActiveHand := h. h processEvents. capturingGesture := capturingGest...]}<br>
Array(SequenceableCollection)>>do:<br>
WorldState>>handsDo:<br>
WorldState>>doOneCycleNowFor:<br>
WorldState>>doOneCycleFor:<br>
PasteUpMorph>>doOneCycle<br>
[] in Project class>>spawnNewProcess {[[World doOneCycle. Processor yield. false] whileFalse. nil]}<br>
[] in BlockContext>>newProcess {[self value. Processor terminateActive]}<br>
<br>
<br>
> Rotating flaps DNU and other mishaps<br>
> ------------------------------------<br>
><br>
> Key: SQ-1119<br>
> URL: <a href="http://tracker.squeakland.org/browse/SQ-1119" target="_blank">http://tracker.squeakland.org/browse/SQ-1119</a><br>
> Project: squeakland<br>
> Issue Type: Bug<br>
> Components: etoys<br>
> Reporter: Karl Ramberg<br>
> Fix For: future release<br>
><br>
><br>
> Most flaps can be rotated by rotation handle but none of them do this gracefully. Viewer flaps give DNU when collapsed and opened again. 'About' flap leaves a green transformation morph on the desktop.<br>
> Should we disable the rotation handle for flaps ?<br>
> I can'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>