RFR: 8141391: DnD doesn't work for JFXPanel

Prasanta Sadhukhan psadhukhan at openjdk.org
Fri Jul 11 04:38:56 UTC 2025


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

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

Commit messages:
 - whitespace
 - 8141391: DnD doesn't work for JFXPanel

Changes: https://git.openjdk.org/jfx/pull/1843/files
  Webrev: https://webrevs.openjdk.org/?repo=jfx&pr=1843&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8141391
  Stats: 48 lines in 1 file changed: 36 ins; 4 del; 8 mod
  Patch: https://git.openjdk.org/jfx/pull/1843.diff
  Fetch: git fetch https://git.openjdk.org/jfx.git pull/1843/head:pull/1843

PR: https://git.openjdk.org/jfx/pull/1843


More information about the openjfx-dev mailing list