[self-interest] Fix morphs

Jecel Assumpcao Jr jecel at merlintec.com
Fri May 10 21:13:11 UTC 2002

On Friday 10 May 2002 02:40, Thorsten Dittmar wrote:
> For an application that I'm writing in the moment, I need a morph
> that has fix position to the current view. For example like the
> radarView. When I looked at this implementation I found out that it
> works in different way then I mentioned. The radarView is not fixed,
> it just ignore the movements that was directed by the radarView
> itself. For example, if you have 2 radarViews and you use one of them
> to move to the right, the other is not visible in the current view
> anymore.

I would say that the radarView jumps to a new position in the world and 
then changes your viewpoint of that world so it ends up in the same 
place on the screen.

> What I need is something like the flaps in Squeak, but I found it not
> very helpful to look at their implementation. For me the differences
> between the two different implementations looks to great, maybe I'm
> wrong. Any idea how I can do things like that in self?

You can't scroll around in Squeak, so flaps are a rather different 
beast. But you are right - we really do need something like that.

When I was creating a presentation in Self for the 2000 Selfest the 
awkwardness of moving things around further than a single screen became 
too much. You have to drag an object from one side to the other, then 
drop it, then go to the radarView and click once on twice on the arrow 
buttons, then with the object now near the other side of the screen you 
repeat the process. So here is what I did - I modified the worldMorph 
so that typing the arrow keys on the keyboard would have the same 
effect as using the radarView. Now I could hold the object with the 
mouse (or objects, when using a carpetMorph) and scroll around with the 
keyboard to get to where I wanted to drop off the object. This made a 
*huge* difference in usability and allowed me to quickly do massive 
rearrangements of morphs spread around the world.

With a little more time I would probably have tried a different 
approach more like what you want: to allow objects to "hover" above the 
world so they would stay in the same place as you scrolled in the 
world. You might find this description of an evolution of this idea 
interesting: http://www.merlintec.com/pegasus2000/e_gui.html

One feature of flaps, the hability to hide off to one side when not in 
use, is much more important in Squeak where there is only one screen 
than in Self where we can have as many windows as we like. See the 
"open factory window" option in the yellow menu for an example of this 
flap-like behavior.

A possible implementation for the "hover objects" would be to patch the 
worldMorph's scrolling code. We could add a slot with a set of such 
object and the worldMorph would change each of their positions so that 
they would stay in one place on the screen like the radarView.

-- Jecel

More information about the Self-interest mailing list