< prev index next >

src/java.desktop/windows/native/libawt/windows/awt_Component.cpp

Print this page

        

*** 3822,3850 **** } for (int iCandType=0; iCandType<32; iCandType++, bits<<=1) { if ( m_bitsCandType & bits ) SetCandidateWindow(iCandType, x - p.x, y - p.y); } - if (m_bitsCandType != 0) { - // REMIND: is there any chance GetProxyFocusOwner() returns NULL here? - ::DefWindowProc(ImmGetHWnd(), - WM_IME_NOTIFY, IMN_OPENCANDIDATE, m_bitsCandType); - } } void AwtComponent::SetCandidateWindow(int iCandType, int x, int y) { HWND hwnd = ImmGetHWnd(); HIMC hIMC = ImmGetContext(hwnd); CANDIDATEFORM cf; cf.dwIndex = iCandType; cf.dwStyle = CFS_POINT; ! cf.ptCurrentPos.x = x; ! cf.ptCurrentPos.y = y; ! ImmSetCandidateWindow(hIMC, &cf); ImmReleaseContext(hwnd, hIMC); } MsgRouting AwtComponent::WmImeSetContext(BOOL fSet, LPARAM *lplParam) { // If the Windows input context is disabled, do not let Windows --- 3822,3859 ---- } for (int iCandType=0; iCandType<32; iCandType++, bits<<=1) { if ( m_bitsCandType & bits ) SetCandidateWindow(iCandType, x - p.x, y - p.y); } } void AwtComponent::SetCandidateWindow(int iCandType, int x, int y) { HWND hwnd = ImmGetHWnd(); HIMC hIMC = ImmGetContext(hwnd); + if (hIMC) { CANDIDATEFORM cf; + cf.dwStyle = CFS_POINT; + ImmGetCandidateWindow(hIMC, 0, &cf); + if (x != cf.ptCurrentPos.x || y != cf.ptCurrentPos.y) { cf.dwIndex = iCandType; cf.dwStyle = CFS_POINT; ! cf.ptCurrentPos = {x, y}; ! cf.rcArea = {0, 0, 0, 0}; ImmSetCandidateWindow(hIMC, &cf); + } + COMPOSITIONFORM cfr; + cfr.dwStyle = CFS_POINT; + ImmGetCompositionWindow(hIMC, &cfr); + if (x != cfr.ptCurrentPos.x || y != cfr.ptCurrentPos.y) { + cfr.dwStyle = CFS_POINT; + cfr.ptCurrentPos = {x, y}; + cfr.rcArea = {0, 0, 0, 0}; + ImmSetCompositionWindow(hIMC, &cfr); + } ImmReleaseContext(hwnd, hIMC); + } } MsgRouting AwtComponent::WmImeSetContext(BOOL fSet, LPARAM *lplParam) { // If the Windows input context is disabled, do not let Windows
*** 3868,3885 **** } MsgRouting AwtComponent::WmImeNotify(WPARAM subMsg, LPARAM bitsCandType) { if (!m_useNativeCompWindow) { ! if (subMsg == IMN_OPENCANDIDATE) { m_bitsCandType = bitsCandType; InquireCandidatePosition(); } else if (subMsg == IMN_OPENSTATUSWINDOW || ! subMsg == WM_IME_STARTCOMPOSITION) { ! m_bitsCandType = 0; ! InquireCandidatePosition(); ! } else if (subMsg == IMN_SETCANDIDATEPOS) { InquireCandidatePosition(); } return mrConsume; } return mrDoDefault; --- 3877,3892 ---- } MsgRouting AwtComponent::WmImeNotify(WPARAM subMsg, LPARAM bitsCandType) { if (!m_useNativeCompWindow) { ! if (subMsg == IMN_OPENCANDIDATE || subMsg == IMN_CHANGECANDIDATE) { m_bitsCandType = bitsCandType; InquireCandidatePosition(); } else if (subMsg == IMN_OPENSTATUSWINDOW || ! subMsg == WM_IME_STARTCOMPOSITION || ! subMsg == IMN_SETCANDIDATEPOS) { InquireCandidatePosition(); } return mrConsume; } return mrDoDefault;
< prev index next >