< prev index next >

src/java.desktop/unix/native/libawt_xawt/awt/awt_InputMethod.c

Print this page

        

*** 1621,1638 **** #if defined(__linux__) || defined(MACOSX) if (NULL != pX11IMData->statusWindow) { Window focus = 0; int revert_to; - #if defined(_LP64) && !defined(_LITTLE_ENDIAN) - // The Window value which is used for XGetICValues must be 32bit on BigEndian XOrg's xlib - unsigned int w = 0; - #else Window w = 0; - #endif XGetInputFocus(awt_display, &focus, &revert_to); XGetICValues(pX11IMData->current_ic, XNFocusWindow, &w, NULL); if (RevertToPointerRoot == revert_to && pX11IMData->ic_active != pX11IMData->ic_passive) { if (pX11IMData->current_ic == pX11IMData->ic_active) { if (getParentWindow(focus) == getParentWindow(w)) { XUnsetICFocus(pX11IMData->ic_active); --- 1621,1638 ---- #if defined(__linux__) || defined(MACOSX) if (NULL != pX11IMData->statusWindow) { Window focus = 0; int revert_to; Window w = 0; XGetInputFocus(awt_display, &focus, &revert_to); XGetICValues(pX11IMData->current_ic, XNFocusWindow, &w, NULL); + #if defined(_LP64) && !defined(_LITTLE_ENDIAN) + // On 64bit BigEndian, + // Window value may be stored on high 32bit by XGetICValues via XIM + if (w > 0xffffffffUL) w = w >> 32; + #endif if (RevertToPointerRoot == revert_to && pX11IMData->ic_active != pX11IMData->ic_passive) { if (pX11IMData->current_ic == pX11IMData->ic_active) { if (getParentWindow(focus) == getParentWindow(w)) { XUnsetICFocus(pX11IMData->ic_active);
*** 1677,1692 **** JNIEXPORT jboolean JNICALL Java_sun_awt_X11InputMethodBase_isCompositionEnabledNative (JNIEnv *env, jobject this) { X11InputMethodData *pX11IMData = NULL; char * ret = NULL; - #if defined(_LP64) && !defined(_LITTLE_ENDIAN) - // XIMPreeditState value which is used for XGetICValues must be 32bit on BigEndian XOrg's xlib - unsigned int state = XIMPreeditUnKnown; - #else XIMPreeditState state = XIMPreeditUnKnown; - #endif XVaNestedList pr_atrb; AWT_LOCK(); pX11IMData = getX11InputMethodData(env, this); --- 1677,1687 ----
*** 1698,1707 **** --- 1693,1707 ---- pr_atrb = XVaCreateNestedList(0, XNPreeditState, &state, NULL); ret = XGetICValues(pX11IMData->current_ic, XNPreeditAttributes, pr_atrb, NULL); XFree((void *)pr_atrb); AWT_UNLOCK(); + #if defined(__linux__) && defined(_LP64) && !defined(_LITTLE_ENDIAN) + // On 64bit BigEndian, + // XIMPreeditState value may be stored on high 32bit by XGetICValues via XIM + if (state > 0xffffffffUL) state = state >> 32; + #endif if ((ret != 0) && ((strcmp(ret, XNPreeditAttributes) == 0) || (strcmp(ret, XNPreeditState) == 0))) { JNU_ThrowByName(env, "java/lang/UnsupportedOperationException", "");
< prev index next >