991 992 //+++gdb NOTE: This is using a linear search of the screens. If it should 993 // prove to be a bottleneck, this can definitely be improved. However, 994 // many screens should prove to be the exception, rather than the rule. 995 NSArray* screens = [NSScreen screens]; 996 NSUInteger i; 997 for (i = 0; i < [screens count]; i++) 998 { 999 if ([[screens objectAtIndex:i] isEqualTo:screen]) 1000 { 1001 index = i; 1002 break; 1003 } 1004 } 1005 1006 JNF_COCOA_EXIT(env); 1007 return 1; 1008 } 1009 1010 1011 /* 1012 * Class: sun_lwawt_macosx_CPlatformWindow 1013 * Method: _toggleFullScreenMode 1014 * Signature: (J)V 1015 */ 1016 JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow__1toggleFullScreenMode 1017 (JNIEnv *env, jobject peer, jlong windowPtr) 1018 { 1019 JNF_COCOA_ENTER(env); 1020 1021 AWTWindow *window = OBJC(windowPtr); 1022 SEL toggleFullScreenSelector = @selector(toggleFullScreen:); 1023 if (![window respondsToSelector:toggleFullScreenSelector]) return; 1024 1025 [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ 1026 [window performSelector:toggleFullScreenSelector withObject:nil]; 1027 }]; 1028 1029 JNF_COCOA_EXIT(env); 1030 } 1031 1032 JNIEXPORT jboolean JNICALL Java_sun_lwawt_macosx_CMouseInfoPeer_nativeIsWindowUnderMouse 1033 (JNIEnv *env, jclass clazz, jlong windowPtr) 1034 { 1035 __block jboolean underMouse = JNI_FALSE; 1036 1037 JNF_COCOA_ENTER(env); 1038 AWT_ASSERT_NOT_APPKIT_THREAD; 1039 1040 AWTWindow *aWindow = OBJC(windowPtr); 1041 [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^() { 1042 AWT_ASSERT_APPKIT_THREAD; 1043 1044 NSPoint pt = [aWindow mouseLocationOutsideOfEventStream]; 1045 underMouse = [[aWindow contentView] hitTest:pt] != nil; 1046 }]; 1047 1048 JNF_COCOA_EXIT(env); 1049 1050 return underMouse; 1051 } | 991 992 //+++gdb NOTE: This is using a linear search of the screens. If it should 993 // prove to be a bottleneck, this can definitely be improved. However, 994 // many screens should prove to be the exception, rather than the rule. 995 NSArray* screens = [NSScreen screens]; 996 NSUInteger i; 997 for (i = 0; i < [screens count]; i++) 998 { 999 if ([[screens objectAtIndex:i] isEqualTo:screen]) 1000 { 1001 index = i; 1002 break; 1003 } 1004 } 1005 1006 JNF_COCOA_EXIT(env); 1007 return 1; 1008 } 1009 1010 1011 JNIEXPORT jboolean JNICALL Java_sun_lwawt_macosx_CMouseInfoPeer_nativeIsWindowUnderMouse 1012 (JNIEnv *env, jclass clazz, jlong windowPtr) 1013 { 1014 __block jboolean underMouse = JNI_FALSE; 1015 1016 JNF_COCOA_ENTER(env); 1017 AWT_ASSERT_NOT_APPKIT_THREAD; 1018 1019 AWTWindow *aWindow = OBJC(windowPtr); 1020 [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^() { 1021 AWT_ASSERT_APPKIT_THREAD; 1022 1023 NSPoint pt = [aWindow mouseLocationOutsideOfEventStream]; 1024 underMouse = [[aWindow contentView] hitTest:pt] != nil; 1025 }]; 1026 1027 JNF_COCOA_EXIT(env); 1028 1029 return underMouse; 1030 } |