Sounds like you have a good grip on understanding the problem… The last idea you mention is basically the best approach I’ve seen for this without a repeater.
-
A good way to detect if widget A is over widget B or C or D, etc. is to test for each possibility in a series of Else If cases. Assign the cases to the Dragged or Moved event of each draggable widget.
-
A good way for widget A to tell widget B to do something is to use the Fire Event action. If it is something the user wouldn’t/couldn’t ever do, like moving widget B automatically to widget A’s original location, you can utilize some otherwise unused action of widget B, like Rotate, Resized, Moved, etc.
A few months ago I posted an updated example of this approach, built from several threads years ago which have been deprecated.
Using a repeater can help with more than a handful of items, but you need to “fake” the movement of items between rows. @pdcdec has posted a great solution for this:
Hopefully one or both of these threads can help you. If you can’t get it applied to your prototype or run into other issues, I can take a look at your file.