44 static CDropTarget* GetCDropTarget(jlong jdroptarget) {
45 CDropTarget* dropTarget = (CDropTarget*) jlong_to_ptr(jdroptarget);
46
47 // Make sure the drop target is of the right kind:
48 if ([dropTarget isKindOfClass:[CDropTarget class]]) {
49 return dropTarget;
50 }
51
52 return nil;
53 }
54
55
56 /*
57 * Class: sun_lwawt_macosx_CDropTargetContextPeer
58 * Method: startTransfer
59 * Signature: (JJ)J
60 */
61 JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CDropTargetContextPeer_startTransfer
62 (JNIEnv *env, jobject jthis, jlong jdroptarget, jlong jformat)
63 {
64 AWT_ASSERT_NOT_APPKIT_THREAD;
65
66 jlong result = (jlong) 0L;
67
68 // Currently startTransfer and endTransfer are synchronous since [CDropTarget copyDraggingDataForFormat]
69 // works off a data copy and doesn't have to go to the native event thread to get the data.
70 // We can have endTransfer just call startTransfer.
71
72 JNF_COCOA_ENTER(env);
73 // Get the drop target native object:
74 CDropTarget* dropTarget = GetCDropTarget(jdroptarget);
75 if (dropTarget == nil) {
76 DLog2(@"[CDropTargetContextPeer startTransfer]: GetCDropTarget failed for %d.\n", (NSInteger) jdroptarget);
77 TransferFailed(env, jthis, jdroptarget, (jlong) 0L, jformat);
78 return result;
79 }
80
81 JNF_MEMBER_CACHE(newDataMethod, jc_CDropTargetContextPeer, "newData", "(J[B)V");
82 if ((*env)->ExceptionOccurred(env) || !newDataMethod) {
83 DLog2(@"[CDropTargetContextPeer startTransfer]: couldn't get newData method for %d.\n", (NSInteger) jdroptarget);
84 TransferFailed(env, jthis, jdroptarget, (jlong) 0L, jformat);
|
44 static CDropTarget* GetCDropTarget(jlong jdroptarget) {
45 CDropTarget* dropTarget = (CDropTarget*) jlong_to_ptr(jdroptarget);
46
47 // Make sure the drop target is of the right kind:
48 if ([dropTarget isKindOfClass:[CDropTarget class]]) {
49 return dropTarget;
50 }
51
52 return nil;
53 }
54
55
56 /*
57 * Class: sun_lwawt_macosx_CDropTargetContextPeer
58 * Method: startTransfer
59 * Signature: (JJ)J
60 */
61 JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CDropTargetContextPeer_startTransfer
62 (JNIEnv *env, jobject jthis, jlong jdroptarget, jlong jformat)
63 {
64
65 jlong result = (jlong) 0L;
66
67 // Currently startTransfer and endTransfer are synchronous since [CDropTarget copyDraggingDataForFormat]
68 // works off a data copy and doesn't have to go to the native event thread to get the data.
69 // We can have endTransfer just call startTransfer.
70
71 JNF_COCOA_ENTER(env);
72 // Get the drop target native object:
73 CDropTarget* dropTarget = GetCDropTarget(jdroptarget);
74 if (dropTarget == nil) {
75 DLog2(@"[CDropTargetContextPeer startTransfer]: GetCDropTarget failed for %d.\n", (NSInteger) jdroptarget);
76 TransferFailed(env, jthis, jdroptarget, (jlong) 0L, jformat);
77 return result;
78 }
79
80 JNF_MEMBER_CACHE(newDataMethod, jc_CDropTargetContextPeer, "newData", "(J[B)V");
81 if ((*env)->ExceptionOccurred(env) || !newDataMethod) {
82 DLog2(@"[CDropTargetContextPeer startTransfer]: couldn't get newData method for %d.\n", (NSInteger) jdroptarget);
83 TransferFailed(env, jthis, jdroptarget, (jlong) 0L, jformat);
|