Hi, Tim!
1. Once a morph receives an event, it can reject it due to some general conditions. This is not specific to but includes drop events. The default implementation of #rejectsEvent: considers visibility and locked state of the receiving morph.
2. The default event dispatcher tries to dispatch the event on the morph or any of its submorphs if necessary: Leaves first! It means that the current morph will get the last chance to process the (drop) event. There are some mechanisms that override this behavior, e.g. #mouseDownPriority. Drop events can be rejected for the whole sub-scenegraph with #rejectDropEvent:. However, you should override #repelsMorph:event: for this purpose.
3. Then, a morph gets the chance to actually handle the drop event. (Morph>>#handleEvent: resp. DropEvent>>#sentTo: and Morph>>#handleDropMorph:)
4. Now the methods you should actually implement (besides maybe #repelsMorph:event:) are:
#wantsDroppedMorph:event: #wantsToBeDroppedInto: #acceptDroppingMorph:event: #justDroppedInto:event:
These are more or less self-explaining. Configuring #dropEnabled does not control the whole sub-scenegraph but only one specific morph in the hierarchy.
Maybe, this helps. :)
Best, Marcel
P.S.: Here is a picture with code: http://forum.world.st/file/n4701110/morphic-drop-events.png
-- View this message in context: http://forum.world.st/Drag-drop-in-Morphic-updating-old-code-tp4700849p47011... Sent from the Squeak - Dev mailing list archive at Nabble.com.