From 82a710eb0f2b3b272fb66a908067ca06f060bbc4 Mon Sep 17 00:00:00 2001 From: Andrew Brygin Date: Fri, 24 Apr 2015 15:45:25 +0300 Subject: [PATCH] 8076455: IME Composition Window is displayed on incorrect position Reviewed-by: serb, azvegint --- .../windows/native/libawt/windows/awt_Component.cpp | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/jdk/src/java.desktop/windows/native/libawt/windows/awt_Component.cpp b/jdk/src/java.desktop/windows/native/libawt/windows/awt_Component.cpp index e57af3826b4..26532bb15fb 100644 --- a/jdk/src/java.desktop/windows/native/libawt/windows/awt_Component.cpp +++ b/jdk/src/java.desktop/windows/native/libawt/windows/awt_Component.cpp @@ -3742,12 +3742,14 @@ void AwtComponent::SetCompositionWindow(RECT& r) void AwtComponent::OpenCandidateWindow(int x, int y) { UINT bits = 1; - RECT rc; - GetWindowRect(GetHWnd(), &rc); + POINT p = {0, 0}; // upper left corner of the client area + HWND hWnd = GetHWnd(); + HWND hTop = GetTopLevelParentForWindow(hWnd); + ::ClientToScreen(hTop, &p); for (int iCandType=0; iCandType<32; iCandType++, bits<<=1) { if ( m_bitsCandType & bits ) - SetCandidateWindow(iCandType, x-rc.left, y-rc.top); + SetCandidateWindow(iCandType, x - p.x, y - p.y); } if (m_bitsCandType != 0) { // REMIND: is there any chance GetProxyFocusOwner() returns NULL here?