Another stupid Morphic Question

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

Another stupid Morphic Question

Jerome Peace
Hi Andrew,

Just wanted to point you to my previous reply

http://lists.squeakfoundation.org/pipermail/squeak-dev/2007-May/116371.html


And I found some of my wip code that my serve as a
good example and placed it on bob's superswiki here:

http://209.143.91.36/super/728
aka
http://209.143.91.36/super/MovingPiece-wiz

Its in the form of a project meant to work in 3.9
(7067).

HTH.

Yours in curiosity and service, --Jerome Peace



***
>  
>  
>  Another stupid Morphic Question
>  Andrew P. Black black at cs.pdx.edu
>  Tue May 1 16:03:44 UTC 2007 wrote:

>  
>  On 1 May 2007, at 1:07, Andreas Raab wrote:
>  
>  > ... it's the world which implements the default
>  behavior of  
>  > dragging objects. In other words the action is
>  contextual (objects  
>  > in the world can be dragged) not builtin.
>  
>  Aha!  This was an insight that I was missing.
Someone
>  should write a  
>  book that explains all this stuff ;-)
>
Why not start a wiki page.

You can either copy from the mail or use hypertext to
point to the relevant emails in the archive.

 
>  > This code seems both overly complicated as well
as at
>  least  
>  > somewhat buggy (grabMorph:from: should only be
used
>  for owner-less  
>  > morphs). Try the following instead:
>  >
>  > rect := RectangleMorph new.
>  > rect extent: 100 at 100.
>  > circle := EllipseMorph new.
>  > circle extent: 100 at 100.
>  > rect addMorphCentered: circle.
>  > rect on: #mouseDown send: #value to:["ignore
drags"].
>  > circle on: #mouseDown send: #value
>  >        to:[circle world primaryHand grabMorph:
>  circle].
>  > rect openInWorld.
>  
>  Well, this is much more elegant: the use of
on:send:to:
>  simplifies  
>  things considerably, and, along the way, explains
how
>  to use  
>  EventHandlers, which were another mystery.  But it
has
>  the same bug:  
>  once the circle has been "picked up", it is no
longer a

>  submorph of  
>  the rectangle.  Presumably that could be fixed by a
>  #mouseUp handler,  
>  although I tried adding
>  
>  circle on: #mouseUp   send: #value
>          to:[rect addMorph: circle].
>  
>  which appeared to have no effect.
>  >
>  >> I could probably find all of the bits of code
that I
>  need, to  
>  >> handle mouse move and so on, taking care of the
>  offset between  
>  >> mouse click event and the origin of the Morph
that
>  I'm moving —  
>  >> most of the code must be in HaloMorph.  But this
was
>  the Default  
>  >> Behavior of the circle before I embedded it in
the
>  rectangle —  
>  >> surely there must be an easier way to get that
>  default behavior  
>  >> back, other than duplicating the code from
whereever
>  it is hidden!
>  >
>  > Well, by far the easiest way is to use a
PasteUpMorph
>  instead of a  
>  > RectangleMorph - PasteUps have this behavior
builtin.
>  
>  That is the answer I was looking for!  Inter alia,
it

>  explains what a  
>  PasteUpMorph is for, somthing that I had never
>  appreciated (except to  
>  know that the World was one).
>  
>  Thank you!
>  
>  Andrew P. Black
>  Department of Computer Science
>  Portland State University
>  +1 503 725 2411
>  
>

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around
http://mail.yahoo.com