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. > 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 > 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 |
Free forum by Nabble | Edit this page |