Hi all, We are developing HeapStats [1] with JavaFX 8. This tool uses SwingNode to use JGraphX [2].
JGraphX suports Drag & Drop. However, DnD in SwingNode occurs InvalidDnDOperationException. Callstack of it is same with JDK-8146900. I checked OpenJDK source, the flag of DnD is static field [3]. DnD event is trapped at FXDnD, and kick the same event via secondary event loop. Thus DnD event will be called twice, and second event will be thrown InvalidDnDOperationException. I think we can fix it as below. However I'm not sure it is correct. Could you help? ------------------- diff -r 20164b54e3d8 modules/swing/src/main/java/javafx/embed/swing/FXDnD.java --- a/modules/swing/src/main/java/javafx/embed/swing/FXDnD.java Wed Jun 08 13:34:10 2016 +1200 +++ b/modules/swing/src/main/java/javafx/embed/swing/FXDnD.java Wed Jun 08 22:02:10 2016 +0900 @@ -312,6 +312,10 @@ // and then start an AWT nested loop to wait until DnD finishes. loop = java.awt.Toolkit.getDefaultToolkit().getSystemEventQueue().createSecondaryLoop(); SwingFXUtils.leaveFXNestedLoop(FXDnD.this); + + // Avoid JDK-8146900 + setDragDropInProgress(false); + if (!loop.enter()) { // An error occured, but there's little we can do here... } ------------------- Thanks, Yasumasa [1] http://icedtea.classpath.org/wiki/HeapStats [2] https://github.com/jgraph/jgraphx [3] http://hg.openjdk.java.net/jdk9/dev/jdk/file/4f717d517d9e/src/java.desktop/share/classes/sun/awt/dnd/SunDragSourceContextPeer.java#l77