src/macosx/native/sun/awt/AWTWindow.m

Print this page




 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 }