Re: [JIRA] Commented: (SQ-1119) Rotating flaps DNU and other mishaps

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Re: [JIRA] Commented: (SQ-1119) Rotating flaps DNU and other mishaps

Karl Ramberg
In the Etoys image we found a very old bug in morphic that I'm not sure how to fix. 

You can test it by trying to rotate a FlapTab in any Squeak image older than 3.1b.

For a very hard image lockup try rotating the FlapTab with the flap open.
Then opening the debugger fails also.

The bug appeared between images Squeak 3.1b and Squeak 3.2 so it has been around a while.

The bug is with creating a TransformationMorph  that has fullBounds nil.

TransformMorph overrides fullBounds:

fullBounds ifNotNil:[^ fullBounds].
fullBounds := bounds.
submorphs do: [:m| m ownerChanged].
^ fullBounds

Even if bounds are not nil, fullBounds gets nil'ed again when calling submorphs ownerChanged.

Any hints and good solutions appreciated :-)

Karl


On Sun, Feb 3, 2013 at 9:18 PM, Karl Ramberg (JIRA) <[hidden email]> wrote:

    [ http://tracker.squeakland.org/browse/SQ-1119?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=40892#action_40892 ]

Karl Ramberg commented on SQ-1119:
----------------------------------

It is really the FlapTab that has some issues with rotation.

Somehow the TransformationMorph fails with nil fullBounds.

I'm not sure how that can happen...


VM: Win32 - a SmalltalkImage
Image: etoys5.0 [latest update: #2409]


UndefinedObject(Object)>>doesNotUnderstand: #hasPositiveExtent
        Receiver: nil
        Arguments and temporary variables:
                aMessage:       hasPositiveExtent
        Receiver's instance variables:
nil

TransformationMorph(Morph)>>invalidRect:from:
        Receiver: a TransformationMorph(2153) on a FlapTab<Flap>(1211) "My Flap"
        Arguments and temporary variables:
                aRectangle:     nil
                aMorph:         a TransformationMorph(2153) on a FlapTab<Flap>(1211) "My Flap"
                damageRect:     nil
        Receiver's instance variables:
                bounds:         99@105 corner: 207@132
                owner:  nil
                submorphs:      #(a FlapTab<Flap>(1211) "My Flap")
                fullBounds:     nil
                color:  Color lightGreen
                extension:      nil
                transform:      a MorphicTransform(angle = 0.0; scale = 1.0; offset = 0@0)
                smoothing:      1
                localBounds:    nil

TransformationMorph(TransformMorph)>>invalidRect:from:
        Receiver: a TransformationMorph(2153) on a FlapTab<Flap>(1211) "My Flap"
        Arguments and temporary variables:
                damageRect:     nil
                aMorph:         a TransformationMorph(2153) on a FlapTab<Flap>(1211) "My Flap"
        Receiver's instance variables:
                bounds:         99@105 corner: 207@132
                owner:  nil
                submorphs:      #(a FlapTab<Flap>(1211) "My Flap")
                fullBounds:     nil
                color:  Color lightGreen
                extension:      nil
                transform:      a MorphicTransform(angle = 0.0; scale = 1.0; offset = 0@0)
                smoothing:      1
                localBounds:    nil

TransformationMorph(Morph)>>invalidRect:
        Receiver: a TransformationMorph(2153) on a FlapTab<Flap>(1211) "My Flap"
        Arguments and temporary variables:
                damageRect:     nil
        Receiver's instance variables:
                bounds:         99@105 corner: 207@132
                owner:  nil
                submorphs:      #(a FlapTab<Flap>(1211) "My Flap")
                fullBounds:     nil
                color:  Color lightGreen
                extension:      nil
                transform:      a MorphicTransform(angle = 0.0; scale = 1.0; offset = 0@0)
                smoothing:      1
                localBounds:    nil


--- The full stack ---
UndefinedObject(Object)>>doesNotUnderstand: #hasPositiveExtent
TransformationMorph(Morph)>>invalidRect:from:
TransformationMorph(TransformMorph)>>invalidRect:from:
TransformationMorph(Morph)>>invalidRect:
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
TransformationMorph(Morph)>>position:
TransformationMorph>>asFlexOf:
FlapTab(Morph)>>addFlexShell
FlapTab(Morph)>>addFlexShellIfNecessary
HaloMorph>>startRot:with:
EventHandler>>send:to:withEvent:fromMorph:
EventHandler>>mouseDown:fromMorph:
ThreePhaseButtonMorph(Morph)>>mouseDown:
ThreePhaseButtonMorph>>mouseDown:
ThreePhaseButtonMorph(Morph)>>handleMouseDown:
MouseButtonEvent>>sentTo:
ThreePhaseButtonMorph(Morph)>>handleEvent:
MorphicEventDispatcher>>dispatchMouseDown:with:
MorphicEventDispatcher>>dispatchEvent:with:
ThreePhaseButtonMorph(Morph)>>processEvent:using:
MorphicEventDispatcher>>dispatchMouseDown:with:
MorphicEventDispatcher>>dispatchEvent:with:
HaloMorph(Morph)>>processEvent:using:
MorphicEventDispatcher>>dispatchMouseDown:with:
MorphicEventDispatcher>>dispatchEvent:with:
PasteUpMorph(Morph)>>processEvent:using:
PasteUpMorph>>processEvent:using:
PasteUpMorph(Morph)>>processEvent:
HandMorph>>sendEvent:focus:clear:
HandMorph>>sendMouseEvent:
HandMorph>>handleEvent:
HandMorph>>processEvents
[] in WorldState>>doOneCycleNowFor: {[:h |  ActiveHand := h.  h processEvents.  capturingGesture := capturingGest...]}
Array(SequenceableCollection)>>do:
WorldState>>handsDo:
WorldState>>doOneCycleNowFor:
WorldState>>doOneCycleFor:
PasteUpMorph>>doOneCycle
[] in Project class>>spawnNewProcess {[[World doOneCycle.  Processor yield.  false] whileFalse.  nil]}
[] in BlockContext>>newProcess {[self value.  Processor terminateActive]}


> Rotating flaps DNU and other mishaps
> ------------------------------------
>
>                 Key: SQ-1119
>                 URL: http://tracker.squeakland.org/browse/SQ-1119
>             Project: squeakland
>          Issue Type: Bug
>          Components: etoys
>            Reporter: Karl Ramberg
>             Fix For: future release
>
>
> 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.
> Should we disable  the rotation handle for flaps ?
> I can't really see a use case for rotating a flap, except for a cool factor ;-)

--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://tracker.squeakland.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira




_______________________________________________
etoys-dev mailing list
[hidden email]
http://lists.squeakland.org/mailman/listinfo/etoys-dev