< prev index next >

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

Print this page




 460     self.nsWindow = nil;
 461     self.ownerWindow = nil;
 462     [super dealloc];
 463 }
 464 
 465 // Tests whether window is blocked by modal dialog/window
 466 - (BOOL) isBlocked {
 467     BOOL isBlocked = NO;
 468 
 469     JNIEnv *env = [ThreadUtilities getJNIEnv];
 470     jobject platformWindow = [self.javaPlatformWindow jObjectWithEnv:env];
 471     if (platformWindow != NULL) {
 472         static JNF_MEMBER_CACHE(jm_isBlocked, jc_CPlatformWindow, "isBlocked", "()Z");
 473         isBlocked = JNFCallBooleanMethod(env, platformWindow, jm_isBlocked) == JNI_TRUE ? YES : NO;
 474         (*env)->DeleteLocalRef(env, platformWindow);
 475     }
 476 
 477     return isBlocked;
 478 }
 479 















 480 // Tests whether the corresponding Java platform window is visible or not
 481 + (BOOL) isJavaPlatformWindowVisible:(NSWindow *)window {
 482     BOOL isVisible = NO;
 483 
 484     if ([AWTWindow isAWTWindow:window] && [window delegate] != nil) {
 485         AWTWindow *awtWindow = (AWTWindow *)[window delegate];
 486         [AWTToolkit eventCountPlusPlus];
 487 
 488         JNIEnv *env = [ThreadUtilities getJNIEnv];
 489         jobject platformWindow = [awtWindow.javaPlatformWindow jObjectWithEnv:env];
 490         if (platformWindow != NULL) {
 491             static JNF_MEMBER_CACHE(jm_isVisible, jc_CPlatformWindow, "isVisible", "()Z");
 492             isVisible = JNFCallBooleanMethod(env, platformWindow, jm_isVisible) == JNI_TRUE ? YES : NO;
 493             (*env)->DeleteLocalRef(env, platformWindow);
 494 
 495         }
 496     }
 497     return isVisible;
 498 }
 499 


 526                         [window setLevel:NSFloatingWindowLevel];
 527                     } else {
 528                         // Focus owner has changed, move the childWindow
 529                         // back to normal window level
 530                         [window setLevel:NSNormalWindowLevel];
 531                     }
 532                     // The childWindow should be displayed in front of
 533                     // its nearest parentWindow
 534                     [window orderWindow:NSWindowAbove relativeTo:[owner.nsWindow windowNumber]];
 535                     break;
 536                 }
 537                 awtWindow = awtWindow.ownerWindow;
 538             }
 539         }
 540     }
 541 }
 542 
 543 // NSWindow overrides
 544 - (BOOL) canBecomeKeyWindow {
 545 AWT_ASSERT_APPKIT_THREAD;
 546     return self.isEnabled && IS(self.styleBits, SHOULD_BECOME_KEY);
 547 }
 548 
 549 - (BOOL) canBecomeMainWindow {
 550 AWT_ASSERT_APPKIT_THREAD;
 551     if (!self.isEnabled) {
 552         // Native system can bring up the NSWindow to
 553         // the top even if the window is not main.
 554         // We should bring up the modal dialog manually
 555         [AWTToolkit eventCountPlusPlus];
 556 
 557         JNIEnv *env = [ThreadUtilities getJNIEnv];
 558         jobject platformWindow = [self.javaPlatformWindow jObjectWithEnv:env];
 559         if (platformWindow != NULL) {
 560             static JNF_MEMBER_CACHE(jm_checkBlockingAndOrder, jc_CPlatformWindow,
 561                                     "checkBlockingAndOrder", "()Z");
 562             JNFCallBooleanMethod(env, platformWindow, jm_checkBlockingAndOrder);
 563             (*env)->DeleteLocalRef(env, platformWindow);
 564         }
 565     }
 566 




 460     self.nsWindow = nil;
 461     self.ownerWindow = nil;
 462     [super dealloc];
 463 }
 464 
 465 // Tests whether window is blocked by modal dialog/window
 466 - (BOOL) isBlocked {
 467     BOOL isBlocked = NO;
 468 
 469     JNIEnv *env = [ThreadUtilities getJNIEnv];
 470     jobject platformWindow = [self.javaPlatformWindow jObjectWithEnv:env];
 471     if (platformWindow != NULL) {
 472         static JNF_MEMBER_CACHE(jm_isBlocked, jc_CPlatformWindow, "isBlocked", "()Z");
 473         isBlocked = JNFCallBooleanMethod(env, platformWindow, jm_isBlocked) == JNI_TRUE ? YES : NO;
 474         (*env)->DeleteLocalRef(env, platformWindow);
 475     }
 476 
 477     return isBlocked;
 478 }
 479 
 480 // Test whether window is simple window and owned by embedded frame
 481 - (BOOL) isSimpleWindowOwnedByEmbeddedFrame {
 482     BOOL isSimpleWindowOwnedByEmbeddedFrame = NO;
 483 
 484     JNIEnv *env = [ThreadUtilities getJNIEnv];
 485     jobject platformWindow = [self.javaPlatformWindow jObjectWithEnv:env];
 486     if (platformWindow != NULL) {
 487         static JNF_MEMBER_CACHE(jm_isBlocked, jc_CPlatformWindow, "isSimpleWindowOwnedByEmbeddedFrame", "()Z");
 488         isSimpleWindowOwnedByEmbeddedFrame = JNFCallBooleanMethod(env, platformWindow, jm_isBlocked) == JNI_TRUE ? YES : NO;
 489         (*env)->DeleteLocalRef(env, platformWindow);
 490     }
 491 
 492     return isSimpleWindowOwnedByEmbeddedFrame;
 493 }
 494 
 495 // Tests whether the corresponding Java platform window is visible or not
 496 + (BOOL) isJavaPlatformWindowVisible:(NSWindow *)window {
 497     BOOL isVisible = NO;
 498 
 499     if ([AWTWindow isAWTWindow:window] && [window delegate] != nil) {
 500         AWTWindow *awtWindow = (AWTWindow *)[window delegate];
 501         [AWTToolkit eventCountPlusPlus];
 502 
 503         JNIEnv *env = [ThreadUtilities getJNIEnv];
 504         jobject platformWindow = [awtWindow.javaPlatformWindow jObjectWithEnv:env];
 505         if (platformWindow != NULL) {
 506             static JNF_MEMBER_CACHE(jm_isVisible, jc_CPlatformWindow, "isVisible", "()Z");
 507             isVisible = JNFCallBooleanMethod(env, platformWindow, jm_isVisible) == JNI_TRUE ? YES : NO;
 508             (*env)->DeleteLocalRef(env, platformWindow);
 509 
 510         }
 511     }
 512     return isVisible;
 513 }
 514 


 541                         [window setLevel:NSFloatingWindowLevel];
 542                     } else {
 543                         // Focus owner has changed, move the childWindow
 544                         // back to normal window level
 545                         [window setLevel:NSNormalWindowLevel];
 546                     }
 547                     // The childWindow should be displayed in front of
 548                     // its nearest parentWindow
 549                     [window orderWindow:NSWindowAbove relativeTo:[owner.nsWindow windowNumber]];
 550                     break;
 551                 }
 552                 awtWindow = awtWindow.ownerWindow;
 553             }
 554         }
 555     }
 556 }
 557 
 558 // NSWindow overrides
 559 - (BOOL) canBecomeKeyWindow {
 560 AWT_ASSERT_APPKIT_THREAD;
 561     return self.isEnabled && (IS(self.styleBits, SHOULD_BECOME_KEY) || [self isSimpleWindowOwnedByEmbeddedFrame]);
 562 }
 563 
 564 - (BOOL) canBecomeMainWindow {
 565 AWT_ASSERT_APPKIT_THREAD;
 566     if (!self.isEnabled) {
 567         // Native system can bring up the NSWindow to
 568         // the top even if the window is not main.
 569         // We should bring up the modal dialog manually
 570         [AWTToolkit eventCountPlusPlus];
 571 
 572         JNIEnv *env = [ThreadUtilities getJNIEnv];
 573         jobject platformWindow = [self.javaPlatformWindow jObjectWithEnv:env];
 574         if (platformWindow != NULL) {
 575             static JNF_MEMBER_CACHE(jm_checkBlockingAndOrder, jc_CPlatformWindow,
 576                                     "checkBlockingAndOrder", "()Z");
 577             JNFCallBooleanMethod(env, platformWindow, jm_checkBlockingAndOrder);
 578             (*env)->DeleteLocalRef(env, platformWindow);
 579         }
 580     }
 581 


< prev index next >