I have a plug-in roughly structured like so:
the user can drag effects from a toolbox component on the right (grey), onto a main viewport in the center (also grey), which is therefore a DragAndDropTarget. toolbox and viewport are siblings so they are enclosed in a larger parent component (in this case the plug-in editor itself) which serves as the DragAndDropContainer for the dragging between the two.
On the left, I have an unrelated list (yellow) which shows a list of files whose order can be changed also by drag and drop. For that to happen, the yellow list itself is a DragAndDropTarget and it is a child of a DragAndDropContainer of its own (fainter yellow).
The intention of this is to keep the drag and drop operations pertaining to the list of files, contained between the list itself and the container that is its parent, and not creep them to the grey components that know nothing about it.
Unfortunately, the moment I inadvertently drag a file from the list over the viewport, I get an assert in the isInterestedInDragSource() from the viewport, which is (correctly) not recognizing the source that is being dragged on it (because it only expects stuff being dragged from the grey toolbox of effects).
This violates the doc for DragAndDropContainer, which says:
to start a drag operation, any sub-component can just call the startDragging() method, and this object will take over, tracking the mouse and sending appropriate callbacks to any child components derived from DragAndDropTarget which the mouse moves over.
The grey viewport in my case is not a child of the yellow DragAndDropContainer and its isInterestedInDragSource() callback should never be called for a drag operation that started from the yellow container.
If the change to fix this is too breaking, at least make the correct behaviour available as an opt-it, thanks.
EDIT: I believe the right place where to fix the algorithm is in DragImageComponent::findTarget()