src/macosx/classes/sun/lwawt/LWComponentPeer.java
Print this page
@@ -983,11 +983,17 @@
}
// DropTargetPeer Method
@Override
public void addDropTarget(DropTarget dt) {
- synchronized (dropTargetLock){
+ LWWindowPeer winPeer = getWindowPeerOrSelf();
+ if (winPeer != null && winPeer != this) {
+ // We need to register the DropTarget in the
+ // peer of the window ancestor of the component
+ winPeer.addDropTarget(dt);
+ } else {
+ synchronized (dropTargetLock) {
// 10-14-02 VL: Windows WComponentPeer would add (or remove) the drop target only
// if it's the first (or last) one for the component. Otherwise this call is a no-op.
if (++fNumDropTargets == 1) {
// Having a non-null drop target would be an error but let's check just in case:
if (fDropTarget != null)
@@ -996,14 +1002,21 @@
// Create a new drop target:
fDropTarget = CDropTarget.createDropTarget(dt, target, this);
}
}
}
+ }
// DropTargetPeer Method
@Override
public void removeDropTarget(DropTarget dt) {
+ LWWindowPeer winPeer = getWindowPeerOrSelf();
+ if (winPeer != null && winPeer != this) {
+ // We need to unregister the DropTarget in the
+ // peer of the window ancestor of the component
+ winPeer.removeDropTarget(dt);
+ } else {
synchronized (dropTargetLock){
// 10-14-02 VL: Windows WComponentPeer would add (or remove) the drop target only
// if it's the first (or last) one for the component. Otherwise this call is a no-op.
if (--fNumDropTargets == 0) {
// Having a null drop target would be an error but let's check just in case:
@@ -1014,10 +1027,11 @@
} else
System.err.println("CComponent.removeDropTarget(): current drop target is null.");
}
}
}
+ }
// ---- PEER NOTIFICATIONS ---- //
/**
* Called when this peer's location has been changed either as a result