--- old/src/share/classes/javax/swing/TransferHandler.java 2013-08-21 16:02:32.565105500 +0400 +++ new/src/share/classes/javax/swing/TransferHandler.java 2013-08-21 16:02:32.404096300 +0400 @@ -1268,6 +1268,14 @@ } } } + if (!isActive()) { + // If the Drop target is inactive the dragExit will not be dispatched to the dtListener, + // so make sure that we clean up the dtListener anyway. + DropTargetListener dtListener = getDropTargetListener(); + if (dtListener != null && dtListener instanceof DropHandler) { + ((DropHandler)dtListener).cleanup(false); + } + } } public void drop(DropTargetDropEvent e) { @@ -1558,7 +1566,7 @@ handleDrag(e); } - private void cleanup(boolean forDrop) { + void cleanup(boolean forDrop) { setComponentDropLocation(null, forDrop); if (component instanceof JComponent) { ((JComponent)component).dndDone();