# HG changeset patch # User denis # Date 1291213512 -10800 # Node ID 010ad57ed8d19475a768cc9eaf167782e4c12cba # Parent 494fbd1859a1f03cc2560871c29270862ca3faaa 6945178: SecurityException upon drag-and-drop Summary: A flag added to distinguish drop action handling. Reviewed-by: uta, art diff -r 494fbd1859a1 -r 010ad57ed8d1 jdk/src/share/classes/sun/awt/dnd/SunDropTargetContextPeer.java --- a/jdk/src/share/classes/sun/awt/dnd/SunDropTargetContextPeer.java Wed Dec 01 14:43:56 2010 +0300 +++ b/jdk/src/share/classes/sun/awt/dnd/SunDropTargetContextPeer.java Wed Dec 01 17:25:12 2010 +0300 @@ -94,6 +94,11 @@ protected int dropStatus = STATUS_NONE; protected boolean dropComplete = false; + // The flag is used to monitor whether the drop action is + // handled by a user. That allows to distinct during + // which operation getTransferData() method is invoked. + boolean dropInProcess = false; + /* * global lock */ @@ -220,7 +225,7 @@ SecurityManager sm = System.getSecurityManager(); try { - if (!dropComplete && sm != null) { + if (!dropInProcess && sm != null) { sm.checkSystemClipboardAccess(); } } catch (Exception e) { @@ -526,6 +531,8 @@ setCurrentJVMLocalSourceTransferable(null); } + dropInProcess = true; + try { ((DropTargetListener)dt).drop(new DropTargetDropEvent(dtc, hots, @@ -538,6 +545,7 @@ } else if (dropComplete == false) { dropComplete(false); } + dropInProcess = false; } } else { rejectDrop();