I missed seeing this when you first posted it. I will add your comments
to the bug report. Alexander Z may want to chime in since the bug is
assigned to him and he is the component lead for SwingNode.
-- Kevin
Yasumasa Suenaga wrote:
PING: Have you ever read this proposal?
Yasumasa
On 2016/06/08 22:05, Yasumasa Suenaga wrote:
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