[jdk8u-dev] Integrated: 8189687: Swing: Invalid position of candidate pop-up of InputMethod in Hi-DPI on Windows
Kazuhisa Takakuri
ktakakuri at openjdk.org
Tue Nov 5 00:06:38 UTC 2024
On Tue, 20 Aug 2024 11:34:03 GMT, Kazuhisa Takakuri <ktakakuri at openjdk.org> wrote:
> This is a backport of JDK-8189687: Swing: Invalid position of candidate pop-up of InputMethod in Hi-DPI on Windows.
> JDK-8189687 contains two fixes to AwtComponent:.OpenCandidateWindow, one of which is backported in this pull request.
> The other fix is an enhancement to JEP 263 (JDK-8055212) and is not needed since JDK8 does not implement JEP 263.
>
> 1. Fix to make OpenCandidateWindow reference the correct Window
> Fix OpenCandidateWindow to reference the proxy window that has focus when getting "HWND."
>
>
> --- a/src/java.desktop/windows/native/libawt/windows/awt_Component.cpp
> +++ b/src/java.desktop/windows/native/libawt/windows/awt_Component.cpp
> @@ -3880,19 +3880,21 @@ void AwtComponent::OpenCandidateWindow(int x, int y)
> {
> UINT bits = 1;
> POINT p = {0, 0}; // upper left corner of the client area
> - HWND hWnd = GetHWnd();
> + HWND hWnd = ImmGetHWnd();
> if (!::IsWindowVisible(hWnd)) {
> return;
> }
>
>
>
> 2. Scaling fixes to enhance JDK-8073320
> OpenJDK9 has supported HiDPI Graphics since JEP 263 (JDK-8055212). This fix is one of its enhancements: when OpenCandidateWindow opens an IME conversion candidate, it corrects the coordinates for the device.
>
>
> In the attached test that reproduces the issue problem, the Panel containing the TextField is a child component, so it refers to the wrong window to get the position coordinate of the candidate window.
> Therefore, the candidate window will appear in the correct position with the "1" fix.
> Note that OpenJDK8 does not implement JEP 263, so the "2" fix is not included in this pull request.
This pull request has now been integrated.
Changeset: 1d2f4670
Author: Kazuhisa Takakuri <ktakakuri at openjdk.org>
URL: https://git.openjdk.org/jdk8u-dev/commit/1d2f46702819a866f5291a0e6338ea0c7ccc1927
Stats: 2 lines in 1 file changed: 0 ins; 0 del; 2 mod
8189687: Swing: Invalid position of candidate pop-up of InputMethod in Hi-DPI on Windows
Reviewed-by: phh
Backport-of: 489e5ae3349370825b7faa1d7514796a2b1ac1c7
-------------
PR: https://git.openjdk.org/jdk8u-dev/pull/564
More information about the jdk8u-dev
mailing list