mirror of
https://github.com/openjdk/jdk.git
synced 2026-02-18 06:15:16 +00:00
6945178: SecurityException upon drag-and-drop
A flag added to distinguish drop action handling. Reviewed-by: uta, art
This commit is contained in:
parent
92db57255d
commit
fe02e1f7c1
@ -94,6 +94,11 @@ public abstract class SunDropTargetContextPeer implements DropTargetContextPeer,
|
||||
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 @@ public abstract class SunDropTargetContextPeer implements DropTargetContextPeer,
|
||||
|
||||
SecurityManager sm = System.getSecurityManager();
|
||||
try {
|
||||
if (!dropComplete && sm != null) {
|
||||
if (!dropInProcess && sm != null) {
|
||||
sm.checkSystemClipboardAccess();
|
||||
}
|
||||
} catch (Exception e) {
|
||||
@ -526,6 +531,8 @@ public abstract class SunDropTargetContextPeer implements DropTargetContextPeer,
|
||||
setCurrentJVMLocalSourceTransferable(null);
|
||||
}
|
||||
|
||||
dropInProcess = true;
|
||||
|
||||
try {
|
||||
((DropTargetListener)dt).drop(new DropTargetDropEvent(dtc,
|
||||
hots,
|
||||
@ -538,6 +545,7 @@ public abstract class SunDropTargetContextPeer implements DropTargetContextPeer,
|
||||
} else if (dropComplete == false) {
|
||||
dropComplete(false);
|
||||
}
|
||||
dropInProcess = false;
|
||||
}
|
||||
} else {
|
||||
rejectDrop();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user