Having a dropped morph to snap to a grid (Cuis Smalltalk)

167 views Asked by At

Which method do I need to change in Cuis, class PasteUpMorph to have a dropped morph to snap to a 10 by 10 pixel grid?

1

There are 1 answers

0
Juan Vuletich On BEST ANSWER

Open the Method Finder: World / Open / Message Names Enter 'drop' in the text box. Click (search) . First message shown is #acceptDroppingMorph:event: We are lucky! At the end of the implementation in PasteUpMorph add:

p := aMorph morphPosition.
p := (p x roundTo: 10) @ (p y roundTo: 10).
aMorph morphPosition: p.

That's it. Maybe instead of the World you want to use a morph of your own, then you can add a DragAndDropAreaMorph to the world, and it that class add this method:

acceptDroppingMorph: aMorph event: evt
    | p |
    super
        acceptDroppingMorph: aMorph
        event: evt.
    p := aMorph morphPosition.
    p := (p x roundTo: 10) @ (p y roundTo: 10).
    aMorph morphPosition: p