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

Print this page

        

*** 736,753 **** (JNIEnv *env, jobject obj, jlong contentViewPtr, jlong styleBits, jdouble x, jdouble y, jdouble w, jdouble h) { __block AWTWindow *window = nil; JNF_COCOA_ENTER(env); - AWT_ASSERT_NOT_APPKIT_THREAD; JNFWeakJObjectWrapper *platformWindow = [JNFWeakJObjectWrapper wrapperWithJObject:obj withEnv:env]; NSView *contentView = OBJC(contentViewPtr); NSRect frameRect = NSMakeRect(x, y, w, h); ! [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ ! AWT_ASSERT_APPKIT_THREAD; window = [[AWTWindow alloc] initWithPlatformWindow:platformWindow styleBits:styleBits frameRect:frameRect contentView:contentView]; --- 736,751 ---- (JNIEnv *env, jobject obj, jlong contentViewPtr, jlong styleBits, jdouble x, jdouble y, jdouble w, jdouble h) { __block AWTWindow *window = nil; JNF_COCOA_ENTER(env); JNFWeakJObjectWrapper *platformWindow = [JNFWeakJObjectWrapper wrapperWithJObject:obj withEnv:env]; NSView *contentView = OBJC(contentViewPtr); NSRect frameRect = NSMakeRect(x, y, w, h); ! [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ window = [[AWTWindow alloc] initWithPlatformWindow:platformWindow styleBits:styleBits frameRect:frameRect contentView:contentView];
*** 768,782 **** */ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowStyleBits (JNIEnv *env, jclass clazz, jlong windowPtr, jint mask, jint bits) { JNF_COCOA_ENTER(env); - AWT_ASSERT_NOT_APPKIT_THREAD; NSWindow *nsWindow = OBJC(windowPtr); ! [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ ! AWT_ASSERT_APPKIT_THREAD; AWTWindow *window = (AWTWindow*)[nsWindow delegate]; // scans the bit field, and only updates the values requested by the mask // (this implicity handles the _CALLBACK_PROP_BITMASK case, since those are passive reads) --- 766,778 ---- */ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowStyleBits (JNIEnv *env, jclass clazz, jlong windowPtr, jint mask, jint bits) { JNF_COCOA_ENTER(env); NSWindow *nsWindow = OBJC(windowPtr); ! [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ AWTWindow *window = (AWTWindow*)[nsWindow delegate]; // scans the bit field, and only updates the values requested by the mask // (this implicity handles the _CALLBACK_PROP_BITMASK case, since those are passive reads)
*** 805,820 **** */ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowMenuBar (JNIEnv *env, jclass clazz, jlong windowPtr, jlong menuBarPtr) { JNF_COCOA_ENTER(env); - AWT_ASSERT_NOT_APPKIT_THREAD; NSWindow *nsWindow = OBJC(windowPtr); CMenuBar *menuBar = OBJC(menuBarPtr); ! [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ ! AWT_ASSERT_APPKIT_THREAD; AWTWindow *window = (AWTWindow*)[nsWindow delegate]; if ([nsWindow isKeyWindow]) [window.javaMenuBar deactivate]; window.javaMenuBar = menuBar; --- 801,814 ---- */ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowMenuBar (JNIEnv *env, jclass clazz, jlong windowPtr, jlong menuBarPtr) { JNF_COCOA_ENTER(env); NSWindow *nsWindow = OBJC(windowPtr); CMenuBar *menuBar = OBJC(menuBarPtr); ! [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ AWTWindow *window = (AWTWindow*)[nsWindow delegate]; if ([nsWindow isKeyWindow]) [window.javaMenuBar deactivate]; window.javaMenuBar = menuBar;
*** 836,853 **** (JNIEnv *env, jclass clazz, jlong windowPtr) { jobject ret = NULL; JNF_COCOA_ENTER(env); - AWT_ASSERT_NOT_APPKIT_THREAD; NSWindow *nsWindow = OBJC(windowPtr); __block NSRect contentRect = NSZeroRect; __block NSRect frame = NSZeroRect; ! [JNFRunLoop performOnMainThreadWaiting:YES withBlock:^(){ ! AWT_ASSERT_APPKIT_THREAD; frame = [nsWindow frame]; contentRect = [NSWindow contentRectForFrameRect:frame styleMask:[nsWindow styleMask]]; }]; --- 830,845 ---- (JNIEnv *env, jclass clazz, jlong windowPtr) { jobject ret = NULL; JNF_COCOA_ENTER(env); NSWindow *nsWindow = OBJC(windowPtr); __block NSRect contentRect = NSZeroRect; __block NSRect frame = NSZeroRect; ! [ThreadUtilities performOnMainThreadWaiting:YES block:^(){ frame = [nsWindow frame]; contentRect = [NSWindow contentRectForFrameRect:frame styleMask:[nsWindow styleMask]]; }];
*** 871,888 **** */ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowBounds (JNIEnv *env, jclass clazz, jlong windowPtr, jdouble originX, jdouble originY, jdouble width, jdouble height) { JNF_COCOA_ENTER(env); - AWT_ASSERT_NOT_APPKIT_THREAD; NSRect jrect = NSMakeRect(originX, originY, width, height); // TODO: not sure we need displayIfNeeded message in our view NSWindow *nsWindow = OBJC(windowPtr); ! [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ ! AWT_ASSERT_APPKIT_THREAD; AWTWindow *window = (AWTWindow*)[nsWindow delegate]; NSRect rect = ConvertNSScreenRect(NULL, jrect); [window constrainSize:&rect.size]; --- 863,878 ---- */ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowBounds (JNIEnv *env, jclass clazz, jlong windowPtr, jdouble originX, jdouble originY, jdouble width, jdouble height) { JNF_COCOA_ENTER(env); NSRect jrect = NSMakeRect(originX, originY, width, height); // TODO: not sure we need displayIfNeeded message in our view NSWindow *nsWindow = OBJC(windowPtr); ! [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ AWTWindow *window = (AWTWindow*)[nsWindow delegate]; NSRect rect = ConvertNSScreenRect(NULL, jrect); [window constrainSize:&rect.size];
*** 911,930 **** */ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowMinMax (JNIEnv *env, jclass clazz, jlong windowPtr, jdouble minW, jdouble minH, jdouble maxW, jdouble maxH) { JNF_COCOA_ENTER(env); - AWT_ASSERT_NOT_APPKIT_THREAD; if (minW < 1) minW = 1; if (minH < 1) minH = 1; if (maxW < 1) maxW = 1; if (maxH < 1) maxH = 1; NSWindow *nsWindow = OBJC(windowPtr); ! [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ ! AWT_ASSERT_APPKIT_THREAD; AWTWindow *window = (AWTWindow*)[nsWindow delegate]; NSSize min = { minW, minH }; NSSize max = { maxW, maxH }; --- 901,918 ---- */ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowMinMax (JNIEnv *env, jclass clazz, jlong windowPtr, jdouble minW, jdouble minH, jdouble maxW, jdouble maxH) { JNF_COCOA_ENTER(env); if (minW < 1) minW = 1; if (minH < 1) minH = 1; if (maxW < 1) maxW = 1; if (maxH < 1) maxH = 1; NSWindow *nsWindow = OBJC(windowPtr); ! [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ AWTWindow *window = (AWTWindow*)[nsWindow delegate]; NSSize min = { minW, minH }; NSSize max = { maxW, maxH };
*** 947,962 **** */ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativePushNSWindowToBack (JNIEnv *env, jclass clazz, jlong windowPtr) { JNF_COCOA_ENTER(env); - AWT_ASSERT_NOT_APPKIT_THREAD; NSWindow *nsWindow = OBJC(windowPtr); ! [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ ! AWT_ASSERT_APPKIT_THREAD; ! [nsWindow orderBack:nil]; }]; JNF_COCOA_EXIT(env); } --- 935,947 ---- */ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativePushNSWindowToBack (JNIEnv *env, jclass clazz, jlong windowPtr) { JNF_COCOA_ENTER(env); NSWindow *nsWindow = OBJC(windowPtr); ! [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [nsWindow orderBack:nil]; }]; JNF_COCOA_EXIT(env); }
*** 968,982 **** */ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativePushNSWindowToFront (JNIEnv *env, jclass clazz, jlong windowPtr) { JNF_COCOA_ENTER(env); - AWT_ASSERT_NOT_APPKIT_THREAD; NSWindow *nsWindow = OBJC(windowPtr); ! [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ ! AWT_ASSERT_APPKIT_THREAD; if (![nsWindow isKeyWindow]) { [nsWindow makeKeyAndOrderFront:nsWindow]; } else { [nsWindow orderFront:nsWindow]; --- 953,965 ---- */ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativePushNSWindowToFront (JNIEnv *env, jclass clazz, jlong windowPtr) { JNF_COCOA_ENTER(env); NSWindow *nsWindow = OBJC(windowPtr); ! [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ if (![nsWindow isKeyWindow]) { [nsWindow makeKeyAndOrderFront:nsWindow]; } else { [nsWindow orderFront:nsWindow];
*** 993,1003 **** */ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowTitle (JNIEnv *env, jclass clazz, jlong windowPtr, jstring jtitle) { JNF_COCOA_ENTER(env); - AWT_ASSERT_NOT_APPKIT_THREAD; NSWindow *nsWindow = OBJC(windowPtr); [nsWindow performSelectorOnMainThread:@selector(setTitle:) withObject:JNFJavaToNSString(env, jtitle) waitUntilDone:NO]; --- 976,985 ----
*** 1014,1032 **** (JNIEnv *env, jclass clazz, jlong windowPtr) { JNF_COCOA_ENTER(env); NSWindow *nsWindow = OBJC(windowPtr); ! if ([NSThread isMainThread]) { ! [nsWindow invalidateShadow]; ! } else { ! [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ ! AWT_ASSERT_APPKIT_THREAD; ! [nsWindow invalidateShadow]; }]; - } JNF_COCOA_EXIT(env); } /* --- 996,1008 ---- (JNIEnv *env, jclass clazz, jlong windowPtr) { JNF_COCOA_ENTER(env); NSWindow *nsWindow = OBJC(windowPtr); ! [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [nsWindow invalidateShadow]; }]; JNF_COCOA_EXIT(env); } /*
*** 1058,1074 **** */ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowMinimizedIcon (JNIEnv *env, jclass clazz, jlong windowPtr, jlong nsImagePtr) { JNF_COCOA_ENTER(env); - AWT_ASSERT_NOT_APPKIT_THREAD; NSWindow *nsWindow = OBJC(windowPtr); NSImage *image = OBJC(nsImagePtr); ! [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ ! AWT_ASSERT_APPKIT_THREAD; ! [nsWindow setMiniwindowImage:image]; }]; JNF_COCOA_EXIT(env); } --- 1034,1047 ---- */ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowMinimizedIcon (JNIEnv *env, jclass clazz, jlong windowPtr, jlong nsImagePtr) { JNF_COCOA_ENTER(env); NSWindow *nsWindow = OBJC(windowPtr); NSImage *image = OBJC(nsImagePtr); ! [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [nsWindow setMiniwindowImage:image]; }]; JNF_COCOA_EXIT(env); }
*** 1080,1120 **** */ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowRepresentedFilename (JNIEnv *env, jclass clazz, jlong windowPtr, jstring filename) { JNF_COCOA_ENTER(env); - AWT_ASSERT_NOT_APPKIT_THREAD; NSWindow *nsWindow = OBJC(windowPtr); NSURL *url = (filename == NULL) ? nil : [NSURL fileURLWithPath:JNFNormalizedNSStringForPath(env, filename)]; ! [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ ! AWT_ASSERT_APPKIT_THREAD; ! [nsWindow setRepresentedURL:url]; }]; JNF_COCOA_EXIT(env); } /* * Class: sun_lwawt_macosx_CPlatformWindow - * Method: nativeSetNSWindowSecurityWarningPositioning - * Signature: (JDDFF)V - */ - JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowSecurityWarningPositioning - (JNIEnv *env, jclass clazz, jlong windowPtr, jdouble x, jdouble y, jfloat biasX, jfloat biasY) - { - JNF_COCOA_ENTER(env); - AWT_ASSERT_NOT_APPKIT_THREAD; - - [JNFException raise:env as:kRuntimeException reason:"unimplemented"]; - - JNF_COCOA_EXIT(env); - } - - /* - * Class: sun_lwawt_macosx_CPlatformWindow * Method: nativeGetTopmostPlatformWindowUnderMouse * Signature: (J)V */ JNIEXPORT jobject JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeGetTopmostPlatformWindowUnderMouse --- 1053,1074 ---- */ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSetNSWindowRepresentedFilename (JNIEnv *env, jclass clazz, jlong windowPtr, jstring filename) { JNF_COCOA_ENTER(env); NSWindow *nsWindow = OBJC(windowPtr); NSURL *url = (filename == NULL) ? nil : [NSURL fileURLWithPath:JNFNormalizedNSStringForPath(env, filename)]; ! [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [nsWindow setRepresentedURL:url]; }]; JNF_COCOA_EXIT(env); } /* * Class: sun_lwawt_macosx_CPlatformWindow * Method: nativeGetTopmostPlatformWindowUnderMouse * Signature: (J)V */ JNIEXPORT jobject JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeGetTopmostPlatformWindowUnderMouse
*** 1142,1155 **** */ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSynthesizeMouseEnteredExitedEvents (JNIEnv *env, jclass clazz) { JNF_COCOA_ENTER(env); - AWT_ASSERT_NOT_APPKIT_THREAD; ! [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ ! AWT_ASSERT_APPKIT_THREAD; [AWTWindow synthesizeMouseEnteredExitedEventsForAllWindows]; }]; JNF_COCOA_EXIT(env); } --- 1096,1107 ---- */ JNIEXPORT void JNICALL Java_sun_lwawt_macosx_CPlatformWindow_nativeSynthesizeMouseEnteredExitedEvents (JNIEnv *env, jclass clazz) { JNF_COCOA_ENTER(env); ! [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [AWTWindow synthesizeMouseEnteredExitedEventsForAllWindows]; }]; JNF_COCOA_EXIT(env); }
*** 1166,1176 **** NSWindow *nsWindow = OBJC(windowPtr); SEL toggleFullScreenSelector = @selector(toggleFullScreen:); if (![nsWindow respondsToSelector:toggleFullScreenSelector]) return; ! [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ [nsWindow performSelector:toggleFullScreenSelector withObject:nil]; }]; JNF_COCOA_EXIT(env); } --- 1118,1128 ---- NSWindow *nsWindow = OBJC(windowPtr); SEL toggleFullScreenSelector = @selector(toggleFullScreen:); if (![nsWindow respondsToSelector:toggleFullScreenSelector]) return; ! [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ [nsWindow performSelector:toggleFullScreenSelector withObject:nil]; }]; JNF_COCOA_EXIT(env); }
*** 1179,1189 **** (JNIEnv *env, jclass clazz, jlong windowPtr, jboolean isEnabled) { JNF_COCOA_ENTER(env); NSWindow *nsWindow = OBJC(windowPtr); ! [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ AWTWindow *window = (AWTWindow*)[nsWindow delegate]; [window setEnabled: isEnabled]; }]; --- 1131,1141 ---- (JNIEnv *env, jclass clazz, jlong windowPtr, jboolean isEnabled) { JNF_COCOA_ENTER(env); NSWindow *nsWindow = OBJC(windowPtr); ! [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ AWTWindow *window = (AWTWindow*)[nsWindow delegate]; [window setEnabled: isEnabled]; }];
*** 1194,1204 **** (JNIEnv *env, jclass clazz, jlong windowPtr) { JNF_COCOA_ENTER(env); NSWindow *nsWindow = OBJC(windowPtr); ! [JNFRunLoop performOnMainThreadWaiting:NO withBlock:^(){ AWTWindow *window = (AWTWindow*)[nsWindow delegate]; if ([AWTWindow lastKeyWindow] == window) { [AWTWindow setLastKeyWindow: nil]; } --- 1146,1156 ---- (JNIEnv *env, jclass clazz, jlong windowPtr) { JNF_COCOA_ENTER(env); NSWindow *nsWindow = OBJC(windowPtr); ! [ThreadUtilities performOnMainThreadWaiting:NO block:^(){ AWTWindow *window = (AWTWindow*)[nsWindow delegate]; if ([AWTWindow lastKeyWindow] == window) { [AWTWindow setLastKeyWindow: nil]; }