DoExternalDrop

Why is the DoExternalDrop overrides event fired with the mouse still in motion? The function name tells me that the event is only supposed to be fired as soon as the external object is dropped not while still dragging or do i miss something?

That only happens when GoView.ExternalDragDropsOnEnter is true. The property is false by default.

The reason for that property is to permit dragging a real GoObject that is an instance of what one would get if a drop actually occurred. So this temporary object looks and acts like the real thing, because it is the real thing, being dragged by GoToolDragging.

One commonly desired feature, for example, is to enable context-sensitive feedback during the drag, based on the details of what is being dragged. The drag-over behavior is implemented by exactly the same code as when handling internal drags.

But when GoView.ExternalDragDropsOnEnter is false, what is dragged during the drag-over is just an image. By default you’ll get an image if the drag source is a GoView, or nothing if it’s coming from some other control. That won’t look as good as the real thing, and a GoImage will not behave the same way as your custom GoNode will.