424 } 425 426 - (void) resetCursorRects { 427 [super resetCursorRects]; 428 [self resetTrackingArea]; 429 } 430 431 -(void) deliverJavaKeyEventHelper: (NSEvent *) event { 432 static NSEvent* sLastKeyEvent = nil; 433 if (event == sLastKeyEvent) { 434 // The event is repeatedly delivered by keyDown: after performKeyEquivalent: 435 return; 436 } 437 [sLastKeyEvent release]; 438 sLastKeyEvent = [event retain]; 439 440 [AWTToolkit eventCountPlusPlus]; 441 JNIEnv *env = [ThreadUtilities getJNIEnv]; 442 443 jstring characters = NULL; 444 if ([event type] != NSFlagsChanged) { 445 characters = JNFNSToJavaString(env, [event characters]); 446 } 447 448 static JNF_CLASS_CACHE(jc_NSEvent, "sun/lwawt/macosx/NSEvent"); 449 static JNF_CTOR_CACHE(jctor_NSEvent, jc_NSEvent, "(IISLjava/lang/String;)V"); 450 jobject jevent = JNFNewObject(env, jctor_NSEvent, 451 [event type], 452 [event modifierFlags], 453 [event keyCode], 454 characters); 455 456 static JNF_CLASS_CACHE(jc_PlatformView, "sun/lwawt/macosx/CPlatformView"); 457 static JNF_MEMBER_CACHE(jm_deliverKeyEvent, jc_PlatformView, 458 "deliverKeyEvent", "(Lsun/lwawt/macosx/NSEvent;)V"); 459 JNFCallVoidMethod(env, m_cPlatformView, jm_deliverKeyEvent, jevent); 460 461 if (characters != NULL) { 462 (*env)->DeleteLocalRef(env, characters); 463 } 464 } 465 466 -(void) deliverResize: (NSRect) rect { 467 jint x = (jint) rect.origin.x; 468 jint y = (jint) rect.origin.y; 469 jint w = (jint) rect.size.width; 470 jint h = (jint) rect.size.height; 471 JNIEnv *env = [ThreadUtilities getJNIEnv]; 472 static JNF_CLASS_CACHE(jc_PlatformView, "sun/lwawt/macosx/CPlatformView"); 473 static JNF_MEMBER_CACHE(jm_deliverResize, jc_PlatformView, "deliverResize", "(IIII)V"); 474 JNFCallVoidMethod(env, m_cPlatformView, jm_deliverResize, x,y,w,h); | 424 } 425 426 - (void) resetCursorRects { 427 [super resetCursorRects]; 428 [self resetTrackingArea]; 429 } 430 431 -(void) deliverJavaKeyEventHelper: (NSEvent *) event { 432 static NSEvent* sLastKeyEvent = nil; 433 if (event == sLastKeyEvent) { 434 // The event is repeatedly delivered by keyDown: after performKeyEquivalent: 435 return; 436 } 437 [sLastKeyEvent release]; 438 sLastKeyEvent = [event retain]; 439 440 [AWTToolkit eventCountPlusPlus]; 441 JNIEnv *env = [ThreadUtilities getJNIEnv]; 442 443 jstring characters = NULL; 444 jstring charactersIgnoringModifiers = NULL; 445 if ([event type] != NSFlagsChanged) { 446 characters = JNFNSToJavaString(env, [event characters]); 447 charactersIgnoringModifiers = JNFNSToJavaString(env, [event charactersIgnoringModifiers]); 448 } 449 450 static JNF_CLASS_CACHE(jc_NSEvent, "sun/lwawt/macosx/NSEvent"); 451 static JNF_CTOR_CACHE(jctor_NSEvent, jc_NSEvent, "(IISLjava/lang/String;Ljava/lang/String;)V"); 452 jobject jevent = JNFNewObject(env, jctor_NSEvent, 453 [event type], 454 [event modifierFlags], 455 [event keyCode], 456 characters, 457 charactersIgnoringModifiers); 458 459 static JNF_CLASS_CACHE(jc_PlatformView, "sun/lwawt/macosx/CPlatformView"); 460 static JNF_MEMBER_CACHE(jm_deliverKeyEvent, jc_PlatformView, 461 "deliverKeyEvent", "(Lsun/lwawt/macosx/NSEvent;)V"); 462 JNFCallVoidMethod(env, m_cPlatformView, jm_deliverKeyEvent, jevent); 463 464 if (characters != NULL) { 465 (*env)->DeleteLocalRef(env, characters); 466 } 467 } 468 469 -(void) deliverResize: (NSRect) rect { 470 jint x = (jint) rect.origin.x; 471 jint y = (jint) rect.origin.y; 472 jint w = (jint) rect.size.width; 473 jint h = (jint) rect.size.height; 474 JNIEnv *env = [ThreadUtilities getJNIEnv]; 475 static JNF_CLASS_CACHE(jc_PlatformView, "sun/lwawt/macosx/CPlatformView"); 476 static JNF_MEMBER_CACHE(jm_deliverResize, jc_PlatformView, "deliverResize", "(IIII)V"); 477 JNFCallVoidMethod(env, m_cPlatformView, jm_deliverResize, x,y,w,h); |