< 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 >