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