src/macosx/native/sun/awt/CDragSource.m
Print this page
*** 82,139 ****
+ (CDragSource *) currentDragSource {
return sCurrentDragSource;
}
! - (id)init:(jobject)jdragsourcecontextpeer component:(jobject)jcomponent peer:(jobject)jpeer control:(id)control
! transferable:(jobject)jtransferable triggerEvent:(jobject)jtrigger
! dragPosX:(jint)dragPosX dragPosY:(jint)dragPosY modifiers:(jint)extModifiers clickCount:(jint)clickCount
! timeStamp:(jlong)timeStamp cursor:(jobject)jcursor
! dragImage:(jobject)jnsdragimage dragImageOffsetX:(jint)jdragimageoffsetx dragImageOffsetY:(jint)jdragimageoffsety
! sourceActions:(jint)jsourceactions formats:(jlongArray)jformats formatMap:(jobject)jformatmap
{
self = [super init];
DLog2(@"[CDragSource init]: %@\n", self);
fView = nil;
fComponent = nil;
// Construct the object if we have a valid model for it:
if (control != nil) {
JNIEnv *env = [ThreadUtilities getJNIEnv];
! fComponent = JNFNewGlobalRef(env, jcomponent);
! fComponentPeer = JNFNewGlobalRef(env, jpeer);
! fDragSourceContextPeer = JNFNewGlobalRef(env, jdragsourcecontextpeer);
!
! fTransferable = JNFNewGlobalRef(env, jtransferable);
! fTriggerEvent = JNFNewGlobalRef(env, jtrigger);
! fCursor = JNFNewGlobalRef(env, jcursor);
! if (jnsdragimage) {
JNF_MEMBER_CACHE(nsImagePtr, CImageClass, "ptr", "J");
! jlong imgPtr = JNFGetLongField(env, jnsdragimage, nsImagePtr);
fDragImage = (NSImage*) jlong_to_ptr(imgPtr); // Double-casting prevents compiler 'd$|//
[fDragImage retain];
}
! fDragImageOffset = NSMakePoint(jdragimageoffsetx, jdragimageoffsety);
! fSourceActions = jsourceactions;
! fFormats = JNFNewGlobalRef(env, jformats);
! fFormatMap = JNFNewGlobalRef(env, jformatmap);
fTriggerEventTimeStamp = timeStamp;
fDragPos = NSMakePoint(dragPosX, dragPosY);
fClickCount = clickCount;
fModifiers = extModifiers;
// Set this object as a dragging source:
! AWTView *awtView = [((NSWindow *) control) contentView];
! fView = [awtView retain];
! [awtView setDragSource:self];
// Let AWTEvent know Java drag is getting underway:
[NSEvent javaDraggingBegin];
}
--- 82,146 ----
+ (CDragSource *) currentDragSource {
return sCurrentDragSource;
}
! - (id) init:(jobject)jDragSourceContextPeer
! component:(jobject)jComponent
! control:(id)control
! transferable:(jobject)jTransferable
! triggerEvent:(jobject)jTrigger
! dragPosX:(jint)dragPosX
! dragPosY:(jint)dragPosY
! modifiers:(jint)extModifiers
! clickCount:(jint)clickCount
! timeStamp:(jlong)timeStamp
! dragImage:(jobject)jDragImage
! dragImageOffsetX:(jint)jDragImageOffsetX
! dragImageOffsetY:(jint)jDragImageOffsetY
! sourceActions:(jint)jSourceActions
! formats:(jlongArray)jFormats
! formatMap:(jobject)jFormatMap
{
self = [super init];
DLog2(@"[CDragSource init]: %@\n", self);
fView = nil;
fComponent = nil;
// Construct the object if we have a valid model for it:
if (control != nil) {
JNIEnv *env = [ThreadUtilities getJNIEnv];
! fComponent = JNFNewGlobalRef(env, jComponent);
! fDragSourceContextPeer = JNFNewGlobalRef(env, jDragSourceContextPeer);
! fTransferable = JNFNewGlobalRef(env, jTransferable);
! fTriggerEvent = JNFNewGlobalRef(env, jTrigger);
!
! if (jDragImage) {
JNF_MEMBER_CACHE(nsImagePtr, CImageClass, "ptr", "J");
! jlong imgPtr = JNFGetLongField(env, jDragImage, nsImagePtr);
fDragImage = (NSImage*) jlong_to_ptr(imgPtr); // Double-casting prevents compiler 'd$|//
[fDragImage retain];
}
! fDragImageOffset = NSMakePoint(jDragImageOffsetX, jDragImageOffsetY);
! fSourceActions = jSourceActions;
! fFormats = JNFNewGlobalRef(env, jFormats);
! fFormatMap = JNFNewGlobalRef(env, jFormatMap);
fTriggerEventTimeStamp = timeStamp;
fDragPos = NSMakePoint(dragPosX, dragPosY);
fClickCount = clickCount;
fModifiers = extModifiers;
// Set this object as a dragging source:
! fView = [(AWTView *) control retain];
! [fView setDragSource:self];
// Let AWTEvent know Java drag is getting underway:
[NSEvent javaDraggingBegin];
}
*** 156,170 ****
if (fComponent != NULL) {
JNFDeleteGlobalRef(env, fComponent);
fComponent = NULL;
}
- if (fComponentPeer != NULL) {
- JNFDeleteGlobalRef(env, fComponentPeer);
- fComponentPeer = NULL;
- }
-
if (fDragSourceContextPeer != NULL) {
JNFDeleteGlobalRef(env, fDragSourceContextPeer);
fDragSourceContextPeer = NULL;
}
--- 163,172 ----
*** 176,190 ****
if (fTriggerEvent != NULL) {
JNFDeleteGlobalRef(env, fTriggerEvent);
fTriggerEvent = NULL;
}
- if (fCursor != NULL) {
- JNFDeleteGlobalRef(env, fCursor);
- fCursor = NULL;
- }
-
if (fFormats != NULL) {
JNFDeleteGlobalRef(env, fFormats);
fFormats = NULL;
}
--- 178,187 ----
*** 584,598 ****
- (void)drag
{
AWT_ASSERT_NOT_APPKIT_THREAD;
- // Set the drag cursor (or not 3839999)
- //JNIEnv *env = [ThreadUtilities getJNIEnv];
- //jobject gCursor = JNFNewGlobalRef(env, fCursor);
- //[EventFactory setJavaCursor:gCursor withEnv:env];
-
[self performSelectorOnMainThread:@selector(doDrag) withObject:nil waitUntilDone:YES]; // AWT_THREADING Safe (called from unique asynchronous thread)
}
/******************************** BEGIN NSDraggingSource Interface ********************************/
--- 581,590 ----