Mantis - Squeak
|Viewing Issue Advanced Details|
|ID:||Category:||Severity:||Reproducibility:||Date Submitted:||Last Update:|
|4440||Morphic||minor||always||08-09-06 00:46||11-19-06 07:07|
|ETA:||none||Fixed in Version:|
|Summary:||0004440: What should happen when an object is picked up from a rendered (transformed) PasteupMorph?|
For this interesting test
In a fresh squeak (7051 or 6665 or 5976 I have gone back further than 3.7)
from objects>basic get an ellipse, a polygon
-put them aside we will use them shortly.
from objects>presentation get a paste up morph
-rotate the paste up morph by 90 degrees.
Now pick up the ellipse and drop it in the ellipse and drop it in the rotated paste up
-observe that the ellipse rotates 90 degrees.
now pick up the ellipse
observe it is still rotated.
picking it up and dropping it do not furthur change it.
now move the ellipse away from the paste up and drop it.
-observe it returns to its normal orientation.
cycle these motions.
the ellipse goes thru a cycle of changes but does not permanently change.
Now for the inconsistency.
Try the same thing with the polygon.
Dropping the polygon rotates it.
Picking it up
- observe it keeps its rotated shape.
Drop it again
- it rotates again.
and it keeps rotating with each cycle.
The above is a relatively tame and safe way to demonstate this effect.
For dramatic effect you can grow the rotated paste up morph and then counterrotate it . Now you have a pasteup which magnifies.
Ellipses behave as descripbed before.
Polygons grow and grow. If you cycle enough the polygon will fill the paste up. If you continue. If you continue to click on the polygon it will crash the system. ( Large polygons allocate huge amounts of memory for the contains point cache see mantis 0000843) .
|Steps To Reproduce:|
The hand belongs to the world.
When it picks up an object from a rendered morph it philosophically should reverse the rendering and hold the object as it would appear in the world not in the rendered pasteup.
This it does not do. When it picks up the object it clones the renderer. Then when the object is actually dropped into the world the renderer is removed.
Polygons do their own rendering. And this doesn't work with the hands scheme.
How to fix?
I just came accross this malbehavior so I am just guessing.
-The cleanest way would unrender things when they are picked up.
-or you could just unrender polygons.
-or the polygons could keep track of its transformation(scale and rotation) while it is being held. Then when dropped it would transform itself to the extent of the differerence of the two transforms.
Yours in service, --Jerome Peace