On Sun, 13 Jul 2025 08:52:31 GMT, Prasanta Sadhukhan <psadhuk...@openjdk.org> 
wrote:

>> Issue is when `JFXPanel `is used to embed some JavaFX components and when we 
>> drag something from swing or an external application and try to drop on a 
>> JavaFX component inside the JFXPanel, it doesn't accept the drop showing 
>> "block" sign suggesting DnD is blocked. 
>> 
>> The problem is in both drag and drop side of operations where `acceptDrag 
>> `and `acceptDrop `on `DropTargetDragEvent `is not called because `DragEvent 
>> constructor` called from `Scene `
>> [which is called from `SwingDnD `via 
>> `EmbeddedSceneDTInterface.handleDragEnter` and `handleDragDrop] 
>> `
>> is not storing `state.acceptedTransferMode` when eventType is not 
>> `DragEvent.DRAG_DROPPED` or `DragEvent.DRAG_DONE` but Scene creates 
>> DragEvent with only `DragEvent.ANY`
>>  so `handleDragEnter `and `handleDragDrop `returns null as 
>> `DragEvent.getAcceptedTransferMode` returns null
>> 
>> Fix is made so that instead of relying on return value of 
>> handleDragEnter/handleDragDrop  which seems to be always null for reason 
>> mentioned above, we rely on `isDataFlavorSupported `check for the drag and 
>> drop as is being done in JDK side of DnD scheme.
>> Also, to have a proper drop of the data, we get the focus owner from the 
>> JFXPanel scene and insert the text in the location pointed to by the mouse 
>> cursor.
>> 
>> Regression test is already present in 
>> tests/manual/swing/DragDropOntoJavaFXControlInJFXPanelTest.java
>
> Prasanta Sadhukhan has updated the pull request incrementally with one 
> additional commit since the last revision:
> 
>   module-info

Ok..This is what was missing as mentioned in the PR description "Scene creates 
DragEvent with only DragEvent.ANY
so handleDragEnter and handleDragDrop returns null as 
DragEvent.getAcceptedTransferMode returns null"
wherein acceptedTransferMode was null..
I didn't know we need to set the transfermode on DRAG_OVER (so that DragEvent 
gets DRAG_OVER eventType instead of DragEvent.ANY) and setDropCompleted from 
the test itself and I was trying to do in the code along with setText assuming 
test was correct.
Thanks for the clarification.

I have updated the test

-------------

PR Comment: https://git.openjdk.org/jfx/pull/1843#issuecomment-3071776055

Reply via email to