src/windows/native/sun/windows/awt_Cursor.cpp

Print this page




 487                                     AwtComponent::GetTopLevelParentForWindow(
 488                                     awtComponent->GetHWnd())));
 489                 if (!blocked) {
 490                     awtComponent->setCursorCache(hCursor);
 491                 }
 492             }
 493             env->DeleteLocalRef(jpeer);
 494         }
 495         env->DeleteGlobalRef(jcomp);
 496     }
 497 
 498     if (!blocked) {
 499         ::SetCursor(hCursor); // don't need WM_AWT_SETCURSOR
 500     }
 501 
 502     env->DeleteGlobalRef(((GlobalSetCursorStruct*)pStruct)->cursor);
 503 }
 504 
 505 /*
 506  * Class:     sun_awt_windows_WGlobalCursorManager
 507  * Method:    setCursor
 508  * Signature: (Ljava/awt/Component;Ljava/awt/Cursor;)V
 509  */
 510 JNIEXPORT void JNICALL
 511 Java_sun_awt_windows_WGlobalCursorManager_setCursor(JNIEnv *env, jobject,
 512                             jobject, jobject cursor, jboolean u)
 513 {
 514     TRY;
 515 
 516     if (cursor != NULL) {  // fix for 4430302 - getCursor() returns NULL
 517         GlobalSetCursorStruct data;
 518         data.cursor = env->NewGlobalRef(cursor);
 519         data.u = u;
 520         AwtToolkit::GetInstance().InvokeFunction(
 521                GlobalSetCursor,
 522                (void *)&data);
 523     } else {
 524         JNU_ThrowNullPointerException(env, "NullPointerException");
 525     }
 526     CATCH_BAD_ALLOC;
 527 }
 528 
 529 /*
 530  * Class:     sun_awt_windows_WGlobalCursorManager






















 531  * Method:    findHeavyweight
 532  * Signature: (II)Z
 533  */
 534 JNIEXPORT jobject JNICALL
 535 Java_sun_awt_windows_WGlobalCursorManager_findHeavyweightUnderCursor(
 536     JNIEnv *env, jobject, jboolean useCache)
 537 {
 538     TRY;
 539 
 540     if (env->EnsureLocalCapacity(1) < 0) {
 541         return NULL;
 542     }
 543 
 544     jobject globalRef = (jobject)AwtToolkit::GetInstance().
 545         InvokeFunction((void*(*)(void*))
 546                        AwtComponent::FindHeavyweightUnderCursor,
 547                        (void *)useCache);
 548     jobject localRef = env->NewLocalRef(globalRef);
 549     env->DeleteGlobalRef(globalRef);
 550     return localRef;




 487                                     AwtComponent::GetTopLevelParentForWindow(
 488                                     awtComponent->GetHWnd())));
 489                 if (!blocked) {
 490                     awtComponent->setCursorCache(hCursor);
 491                 }
 492             }
 493             env->DeleteLocalRef(jpeer);
 494         }
 495         env->DeleteGlobalRef(jcomp);
 496     }
 497 
 498     if (!blocked) {
 499         ::SetCursor(hCursor); // don't need WM_AWT_SETCURSOR
 500     }
 501 
 502     env->DeleteGlobalRef(((GlobalSetCursorStruct*)pStruct)->cursor);
 503 }
 504 
 505 /*
 506  * Class:     sun_awt_windows_WGlobalCursorManager
 507  * Method:    setCursorImpl
 508  * Signature: (Ljava/awt/Component;Ljava/awt/Cursor;)V
 509  */
 510 JNIEXPORT void JNICALL
 511 Java_sun_awt_windows_WGlobalCursorManager_setCursorImpl(JNIEnv *env, jobject,
 512                             jobject, jobject cursor, jboolean u)
 513 {
 514     TRY;
 515 
 516     if (cursor != NULL) {  // fix for 4430302 - getCursor() returns NULL
 517         GlobalSetCursorStruct data;
 518         data.cursor = env->NewGlobalRef(cursor);
 519         data.u = u;
 520         AwtToolkit::GetInstance().InvokeFunction(
 521                GlobalSetCursor,
 522                (void *)&data);
 523     } else {
 524         JNU_ThrowNullPointerException(env, "NullPointerException");
 525     }
 526     CATCH_BAD_ALLOC;
 527 }
 528 
 529 /*
 530  * Class:     sun_awt_windows_WGlobalCursorManager
 531  * Method:    setCursorDirect
 532  * Signature: (Ljava/awt/Component;Ljava/awt/Cursor;)V
 533  */
 534 JNIEXPORT void JNICALL
 535 Java_sun_awt_windows_WGlobalCursorManager_setCursorDirect(JNIEnv *env, jobject,
 536                             jobject, jobject cursor, jboolean u)
 537 {
 538     TRY;
 539 
 540     if (cursor != NULL) {
 541         GlobalSetCursorStruct data;
 542         data.cursor = env->NewGlobalRef(cursor);
 543         data.u = u;
 544         GlobalSetCursor((void *)&data);
 545     } else {
 546         JNU_ThrowNullPointerException(env, "NullPointerException");
 547     }
 548     CATCH_BAD_ALLOC;
 549 }
 550 
 551 /*
 552  * Class:     sun_awt_windows_WGlobalCursorManager
 553  * Method:    findHeavyweight
 554  * Signature: (II)Z
 555  */
 556 JNIEXPORT jobject JNICALL
 557 Java_sun_awt_windows_WGlobalCursorManager_findHeavyweightUnderCursor(
 558     JNIEnv *env, jobject, jboolean useCache)
 559 {
 560     TRY;
 561 
 562     if (env->EnsureLocalCapacity(1) < 0) {
 563         return NULL;
 564     }
 565 
 566     jobject globalRef = (jobject)AwtToolkit::GetInstance().
 567         InvokeFunction((void*(*)(void*))
 568                        AwtComponent::FindHeavyweightUnderCursor,
 569                        (void *)useCache);
 570     jobject localRef = env->NewLocalRef(globalRef);
 571     env->DeleteGlobalRef(globalRef);
 572     return localRef;