--- old/src/macosx/classes/sun/lwawt/macosx/CDropTarget.java 2013-02-28 18:59:34.000000000 +0400 +++ new/src/macosx/classes/sun/lwawt/macosx/CDropTarget.java 2013-02-28 18:59:33.000000000 +0400 @@ -30,6 +30,7 @@ import java.awt.dnd.DropTarget; import sun.lwawt.LWComponentPeer; +import sun.lwawt.PlatformWindow; public final class CDropTarget { @@ -50,21 +51,24 @@ fComponent = component; fPeer = peer; - // Make sure the drop target is a ComponentModel: + // Make sure the drop target is a LWWindowPeer: if (!(peer instanceof LWComponentPeer)) throw new IllegalArgumentException("CDropTarget's peer must be a LWComponentPeer."); - // Get model pointer (CButton.m and such) and its native peer: - LWComponentPeer model = (LWComponentPeer) peer; - if (model.getPlatformWindow() instanceof CPlatformWindow) { - CPlatformWindow platformWindow = (CPlatformWindow) model.getPlatformWindow(); - long nativePeer = platformWindow.getNSWindowPtr(); - - // Create native dragging destination: - fNativeDropTarget = this.createNativeDropTarget(dropTarget, component, peer, nativePeer); - if (fNativeDropTarget == 0) { - throw new IllegalStateException("CDropTarget.createNativeDropTarget() failed."); - } + PlatformWindow platformWindow = ((LWComponentPeer) peer).getPlatformWindow(); + long nativePeer; + if (platformWindow instanceof CPlatformWindow) { + nativePeer = ((CPlatformWindow) platformWindow).getContentView().getAWTView(); + } else if (platformWindow instanceof CViewPlatformEmbeddedFrame){ + nativePeer = ((CViewPlatformEmbeddedFrame) platformWindow).getNSViewPtr(); + } else { + throw new IllegalArgumentException("Unsupported platformWindow implementation"); + } + + // Create native dragging destination: + fNativeDropTarget = this.createNativeDropTarget(dropTarget, component, peer, nativePeer); + if (fNativeDropTarget == 0) { + throw new IllegalStateException("CDropTarget.createNativeDropTarget() failed."); } }