Hi Larry (et al)
As it happens, model worlds behave correctly w/r/t pick-and-drop (even if some programmers don't). Just follow the directions, and don't try to overthink it too much. Just sayin'.
The working setup is very simple in the end.
For each model in the model world, call set_pebble with the model itself as argument.
my_model.set_pebble (my_model)
That will enable a reference to that model to be including in the drop event, when a drop attempt is executed.
To enable the model world to catch the drop event, add an agent to its drop actions.
<world.>drop_actions.extend (agent on_model_drop)
The signature for the drop agent, is
on_model_drop (m: EV_MODEL)
Because model worlds can handle quite a few different event-based interactions, it might seem silly to use pick-and-drop. Pick-and-drop, from an ergonomic perspective, is a big step up from drag-and-drop, but the latter is what's familiar to most users.
The good news is that you can have both in a model world (and some other contexts).
The familiar drag-and-drop will still be there but, given the option, I suspect pick-and-drop would become the preferred mechanism.
If you wish to drop that model onto some other element, an inspection dialog, for example, then P&D is essential, and pretty cool too. While it might be possible to track mouse leave/enter pairs and pointer down/up pairs in concert, to support a kind of drag across widgets, it's an enormous pain and gets very complex, very quickly. P&D is an elegant (and dramatically simpler) option.
Thanks
R