--- old/src/java.desktop/windows/native/libawt/windows/awt_Component.cpp 2016-03-31 18:49:36.087790000 +0300 +++ new/src/java.desktop/windows/native/libawt/windows/awt_Component.cpp 2016-03-31 18:49:35.587785000 +0300 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1996, 2015, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1996, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -3758,7 +3758,10 @@ HWND hWnd = GetHWnd(); HWND hTop = GetTopLevelParentForWindow(hWnd); ::ClientToScreen(hTop, &p); - + if (!m_bitsCandType) { + SetCandidateWindow(m_bitsCandType, x - p.x, y - p.y); + return; + } for (int iCandType=0; iCandType<32; iCandType++, bits<<=1) { if ( m_bitsCandType & bits ) SetCandidateWindow(iCandType, x - p.x, y - p.y); @@ -3776,7 +3779,7 @@ HIMC hIMC = ImmGetContext(hwnd); CANDIDATEFORM cf; cf.dwIndex = iCandType; - cf.dwStyle = CFS_CANDIDATEPOS; + cf.dwStyle = CFS_POINT; cf.ptCurrentPos.x = x; cf.ptCurrentPos.y = y; @@ -3808,8 +3811,12 @@ MsgRouting AwtComponent::WmImeNotify(WPARAM subMsg, LPARAM bitsCandType) { - if (!m_useNativeCompWindow && subMsg == IMN_OPENCANDIDATE) { - m_bitsCandType = bitsCandType; + if (!m_useNativeCompWindow) { + if (subMsg == IMN_OPENCANDIDATE) { + m_bitsCandType = subMsg; + } else if (subMsg != IMN_SETCANDIDATEPOS) { + m_bitsCandType = 0; + } InquireCandidatePosition(); return mrConsume; } @@ -4077,7 +4084,7 @@ if (mr != mrConsume) { HWND proxy = GetProxyFocusOwner(); if (proxy != NULL && ::IsWindowEnabled(proxy)) { - if (proxy != GetHWnd()) { + if (proxy != GetHWnd() && IsContainer()) { retVal = ::SendMessage(proxy, message, wParam, lParam); } else { retVal = ComCtl32Util::GetInstance().DefWindowProc(NULL,