jdk/src/windows/native/sun/windows/awt_TextComponent.cpp
Print this page
rev 5677 : 7186952: Improve clipboard access
Reviewed-by: serb, ahgross
*** 51,68 ****
};
/************************************************************************
* AwtTextComponent fields
*/
- /* java.awt.TextComponent fields */
- jfieldID AwtTextComponent::canAccessClipboardID;
-
-
/************************************************************************
* AwtTextComponent methods
*/
AwtTextComponent::AwtTextComponent() {
m_synthetic = FALSE;
m_lStartPos = -1;
m_lEndPos = -1;
m_lLastPos = -1;
--- 51,66 ----
};
/************************************************************************
* AwtTextComponent fields
*/
/************************************************************************
* AwtTextComponent methods
*/
+ jmethodID AwtTextComponent::canAccessClipboardMID;
+
AwtTextComponent::AwtTextComponent() {
m_synthetic = FALSE;
m_lStartPos = -1;
m_lEndPos = -1;
m_lLastPos = -1;
*** 365,376 ****
if (env->EnsureLocalCapacity(1) < 0) {
return mrConsume;
}
jobject target = GetTarget(env);
jboolean canAccessClipboard =
! env->GetBooleanField(target,
! AwtTextComponent::canAccessClipboardID);
env->DeleteLocalRef(target);
return (canAccessClipboard) ? mrDoDefault : mrConsume;
}
else {
return mrDoDefault;
--- 363,373 ----
if (env->EnsureLocalCapacity(1) < 0) {
return mrConsume;
}
jobject target = GetTarget(env);
jboolean canAccessClipboard =
! env->CallBooleanMethod (target, AwtTextComponent::canAccessClipboardMID);
env->DeleteLocalRef(target);
return (canAccessClipboard) ? mrDoDefault : mrConsume;
}
else {
return mrDoDefault;
*** 852,867 ****
JNIEXPORT void JNICALL
Java_sun_awt_windows_WTextComponentPeer_initIDs(JNIEnv *env, jclass cls)
{
TRY;
! cls = env->FindClass("java/awt/TextComponent");
! if (cls != NULL) {
! AwtTextComponent::canAccessClipboardID =
! env->GetFieldID(cls, "canAccessClipboard", "Z");
! DASSERT(AwtTextComponent::canAccessClipboardID != NULL);
! }
CATCH_BAD_ALLOC;
}
--- 849,865 ----
JNIEXPORT void JNICALL
Java_sun_awt_windows_WTextComponentPeer_initIDs(JNIEnv *env, jclass cls)
{
TRY;
! jclass textComponentClassID = env->FindClass("java/awt/TextComponent");
! AwtTextComponent::canAccessClipboardMID =
! env->GetMethodID(textComponentClassID,
! "canAccessClipboard", "()Z");
! env->DeleteLocalRef(textComponentClassID);
!
! DASSERT(AwtTextComponent::canAccessClipboardMID != NULL)
CATCH_BAD_ALLOC;
}