< prev index next >

src/java.desktop/macosx/native/libawt_lwawt/awt/CTrayIcon.m

Print this page
rev 54094 : 8257853: Remove dependencies on JNF's JNI utility functions in AWT and 2D code
rev 54096 : 8259651: [macOS] Replace JNF_COCOA_ENTER/EXIT macros
rev 54097 : 8259869: [macOS] Remove desktop module dependencies on JNF Reference APIs
rev 54098 : 8260616: Removing remaining JNF dependencies in the java.desktop module
8259729: Missed JNFInstanceOf -> IsInstanceOf conversion

*** 24,34 **** */ #import "jni_util.h" #import <AppKit/AppKit.h> - #import <JavaNativeFoundation/JavaNativeFoundation.h> #import "CTrayIcon.h" #import "ThreadUtilities.h" #include "GeomUtilities.h" #import "LWCToolkit.h" --- 24,33 ----
*** 73,83 **** return self; } -(void) dealloc { JNIEnv *env = [ThreadUtilities getJNIEnvUncached]; ! JNFDeleteGlobalRef(env, peer); [[NSStatusBar systemStatusBar] removeStatusItem: theItem]; // Its a bad idea to force the item to release our view by setting // the item's view to nil: it can lead to a crash in some scenarios. --- 72,82 ---- return self; } -(void) dealloc { JNIEnv *env = [ThreadUtilities getJNIEnvUncached]; ! (*env)->DeleteGlobalRef(env, peer); [[NSStatusBar systemStatusBar] removeStatusItem: theItem]; // Its a bad idea to force the item to release our view by setting // the item's view to nil: it can lead to a crash in some scenarios.
*** 144,156 **** if ([AWTToolkit hasPreciseScrollingDeltas: event]) { deltaX = [event scrollingDeltaX] * 0.1; deltaY = [event scrollingDeltaY] * 0.1; } ! static JNF_CLASS_CACHE(jc_NSEvent, "sun/lwawt/macosx/NSEvent"); ! static JNF_CTOR_CACHE(jctor_NSEvent, jc_NSEvent, "(IIIIIIIIDDI)V"); ! jobject jEvent = JNFNewObject(env, jctor_NSEvent, [event type], [event modifierFlags], clickCount, [event buttonNumber], (jint)localPoint.x, (jint)localPoint.y, --- 143,155 ---- if ([AWTToolkit hasPreciseScrollingDeltas: event]) { deltaX = [event scrollingDeltaX] * 0.1; deltaY = [event scrollingDeltaY] * 0.1; } ! DECLARE_CLASS(jc_NSEvent, "sun/lwawt/macosx/NSEvent"); ! DECLARE_METHOD(jctor_NSEvent, jc_NSEvent, "<init>", "(IIIIIIIIDDI)V"); ! jobject jEvent = (*env)->NewObject(env, jc_NSEvent, jctor_NSEvent, [event type], [event modifierFlags], clickCount, [event buttonNumber], (jint)localPoint.x, (jint)localPoint.y,
*** 158,170 **** deltaY, deltaX, [AWTToolkit scrollStateWithEvent: event]); CHECK_NULL(jEvent); ! static JNF_CLASS_CACHE(jc_TrayIcon, "sun/lwawt/macosx/CTrayIcon"); ! static JNF_MEMBER_CACHE(jm_handleMouseEvent, jc_TrayIcon, "handleMouseEvent", "(Lsun/lwawt/macosx/NSEvent;)V"); ! JNFCallVoidMethod(env, peer, jm_handleMouseEvent, jEvent); (*env)->DeleteLocalRef(env, jEvent); } @end //AWTTrayIcon //================================================ --- 157,170 ---- deltaY, deltaX, [AWTToolkit scrollStateWithEvent: event]); CHECK_NULL(jEvent); ! DECLARE_CLASS(jc_TrayIcon, "sun/lwawt/macosx/CTrayIcon"); ! DECLARE_METHOD(jm_handleMouseEvent, jc_TrayIcon, "handleMouseEvent", "(Lsun/lwawt/macosx/NSEvent;)V"); ! (*env)->CallVoidMethod(env, peer, jm_handleMouseEvent, jEvent); ! CHECK_EXCEPTION(); (*env)->DeleteLocalRef(env, jEvent); } @end //AWTTrayIcon //================================================
*** 266,278 **** // don't show the menu on ctrl+click: it triggers ACTION event, like right click if (([event modifierFlags] & NSControlKeyMask) == 0) { //find CTrayIcon.getPopupMenuModel method and call it to get popup menu ptr. JNIEnv *env = [ThreadUtilities getJNIEnv]; ! static JNF_CLASS_CACHE(jc_CTrayIcon, "sun/lwawt/macosx/CTrayIcon"); ! static JNF_MEMBER_CACHE(jm_getPopupMenuModel, jc_CTrayIcon, "getPopupMenuModel", "()J"); ! jlong res = JNFCallLongMethod(env, trayIcon.peer, jm_getPopupMenuModel); if (res != 0) { CPopupMenu *cmenu = jlong_to_ptr(res); NSMenu* menu = [cmenu menu]; [menu setDelegate:self]; --- 266,279 ---- // don't show the menu on ctrl+click: it triggers ACTION event, like right click if (([event modifierFlags] & NSControlKeyMask) == 0) { //find CTrayIcon.getPopupMenuModel method and call it to get popup menu ptr. JNIEnv *env = [ThreadUtilities getJNIEnv]; ! DECLARE_CLASS(jc_CTrayIcon, "sun/lwawt/macosx/CTrayIcon"); ! DECLARE_METHOD(jm_getPopupMenuModel, jc_CTrayIcon, "getPopupMenuModel", "()J"); ! jlong res = (*env)->CallLongMethod(env, trayIcon.peer, jm_getPopupMenuModel); ! CHECK_EXCEPTION(); if (res != 0) { CPopupMenu *cmenu = jlong_to_ptr(res); NSMenu* menu = [cmenu menu]; [menu setDelegate:self];
*** 329,346 **** */ JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CTrayIcon_nativeCreate (JNIEnv *env, jobject peer) { __block AWTTrayIcon *trayIcon = nil; ! JNF_COCOA_ENTER(env); ! jobject thePeer = JNFNewGlobalRef(env, peer); [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ trayIcon = [[AWTTrayIcon alloc] initWithPeer:thePeer]; }]; ! JNF_COCOA_EXIT(env); return ptr_to_jlong(trayIcon); } --- 330,347 ---- */ JNIEXPORT jlong JNICALL Java_sun_lwawt_macosx_CTrayIcon_nativeCreate (JNIEnv *env, jobject peer) { __block AWTTrayIcon *trayIcon = nil; ! JNI_COCOA_ENTER(env); ! jobject thePeer = (*env)->NewGlobalRef(env, peer); [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ trayIcon = [[AWTTrayIcon alloc] initWithPeer:thePeer]; }]; ! JNI_COCOA_EXIT(env); return ptr_to_jlong(trayIcon); }
*** 359,426 **** * Method: nativeSetToolTip * Signature: (JLjava/lang/String;)V */ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CTrayIcon_nativeSetToolTip (JNIEnv *env, jobject self, jlong model, jstring jtooltip) { ! JNF_COCOA_ENTER(env); AWTTrayIcon *icon = jlong_to_ptr(model); ! NSString *tooltip = JNFJavaToNSString(env, jtooltip); [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [icon setTooltip:tooltip]; }]; ! JNF_COCOA_EXIT(env); } /* * Class: sun_lwawt_macosx_CTrayIcon * Method: setNativeImage * Signature: (JJZ)V */ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CTrayIcon_setNativeImage (JNIEnv *env, jobject self, jlong model, jlong imagePtr, jboolean autosize) { ! JNF_COCOA_ENTER(env); AWTTrayIcon *icon = jlong_to_ptr(model); [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ [icon setImage:jlong_to_ptr(imagePtr) sizing:autosize]; }]; ! JNF_COCOA_EXIT(env); } JNIEXPORT jobject JNICALL Java_sun_lwawt_macosx_CTrayIcon_nativeGetIconLocation (JNIEnv *env, jobject self, jlong model) { jobject jpt = NULL; ! JNF_COCOA_ENTER(env); __block NSPoint pt = NSZeroPoint; AWTTrayIcon *icon = jlong_to_ptr(model); [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ NSPoint loc = [icon getLocationOnScreen]; pt = ConvertNSScreenPoint(env, loc); }]; jpt = NSToJavaPoint(env, pt); ! JNF_COCOA_EXIT(env); return jpt; } JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CTrayIcon_nativeShowNotification (JNIEnv *env, jobject self, jlong model, jobject jcaption, jobject jtext, long nsimage) { ! JNF_COCOA_ENTER(env); AWTTrayIcon *icon = jlong_to_ptr(model); ! NSString *caption = JNFJavaToNSString(env, jcaption); ! NSString *text = JNFJavaToNSString(env, jtext); NSImage * contentImage = jlong_to_ptr(nsimage); [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ NSUserNotification *notification = [[NSUserNotification alloc] init]; notification.title = caption; --- 360,427 ---- * Method: nativeSetToolTip * Signature: (JLjava/lang/String;)V */ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CTrayIcon_nativeSetToolTip (JNIEnv *env, jobject self, jlong model, jstring jtooltip) { ! JNI_COCOA_ENTER(env); AWTTrayIcon *icon = jlong_to_ptr(model); ! NSString *tooltip = JavaStringToNSString(env, jtooltip); [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [icon setTooltip:tooltip]; }]; ! JNI_COCOA_EXIT(env); } /* * Class: sun_lwawt_macosx_CTrayIcon * Method: setNativeImage * Signature: (JJZ)V */ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CTrayIcon_setNativeImage (JNIEnv *env, jobject self, jlong model, jlong imagePtr, jboolean autosize) { ! JNI_COCOA_ENTER(env); AWTTrayIcon *icon = jlong_to_ptr(model); [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ [icon setImage:jlong_to_ptr(imagePtr) sizing:autosize]; }]; ! JNI_COCOA_EXIT(env); } JNIEXPORT jobject JNICALL Java_sun_lwawt_macosx_CTrayIcon_nativeGetIconLocation (JNIEnv *env, jobject self, jlong model) { jobject jpt = NULL; ! JNI_COCOA_ENTER(env); __block NSPoint pt = NSZeroPoint; AWTTrayIcon *icon = jlong_to_ptr(model); [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ NSPoint loc = [icon getLocationOnScreen]; pt = ConvertNSScreenPoint(env, loc); }]; jpt = NSToJavaPoint(env, pt); ! JNI_COCOA_EXIT(env); return jpt; } JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CTrayIcon_nativeShowNotification (JNIEnv *env, jobject self, jlong model, jobject jcaption, jobject jtext, long nsimage) { ! JNI_COCOA_ENTER(env); AWTTrayIcon *icon = jlong_to_ptr(model); ! NSString *caption = JavaStringToNSString(env, jcaption); ! NSString *text = JavaStringToNSString(env, jtext); NSImage * contentImage = jlong_to_ptr(nsimage); [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ NSUserNotification *notification = [[NSUserNotification alloc] init]; notification.title = caption;
*** 430,436 **** [[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:notification]; }]; ! JNF_COCOA_EXIT(env); } --- 431,437 ---- [[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:notification]; }]; ! JNI_COCOA_EXIT(env); }
< prev index next >