OpenJDK / aarch32-port / jdk9u / jdk
changeset 16123:12a5c5f2a7c7
8169355: Diacritics input works incorrectly on Windows if Spanish (Latin American) keyboard layout is used
Reviewed-by: ssadetsky
author | dmarkov |
---|---|
date | Wed, 09 Nov 2016 15:20:30 +0300 |
parents | 12948b3a7663 |
children | 8007f206f347 |
files | src/java.desktop/windows/native/libawt/windows/awt_Component.cpp test/java/awt/InputMethods/SpanishDiacriticsTest/SpanishDiacriticsTest.html test/java/awt/InputMethods/SpanishDiacriticsTest/SpanishDiacriticsTest.java |
diffstat | 3 files changed, 98 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/java.desktop/windows/native/libawt/windows/awt_Component.cpp Tue Nov 08 20:11:13 2016 +0300 +++ b/src/java.desktop/windows/native/libawt/windows/awt_Component.cpp Wed Nov 09 15:20:30 2016 +0300 @@ -3523,7 +3523,7 @@ WORD wChar[2]; int converted = 1; - UINT ch = ::MapVirtualKey(wkey, 2); + UINT ch = ::MapVirtualKeyEx(wkey, 2, GetKeyboardLayout()); if (ch & 0x80000000) { // Dead key which is handled as a normal key isDeadKey = deadKeyActive = TRUE;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/awt/InputMethods/SpanishDiacriticsTest/SpanishDiacriticsTest.html Wed Nov 09 15:20:30 2016 +0300 @@ -0,0 +1,40 @@ +<!-- +Copyright (c) 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 +under the terms of the GNU General Public License version 2 only, as +published by the Free Software Foundation. + +This code is distributed in the hope that it will be useful, but WITHOUT +ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +version 2 for more details (a copy is included in the LICENSE file that +accompanied this code). + +You should have received a copy of the GNU General Public License version +2 along with this work; if not, write to the Free Software Foundation, +Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + +Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +or visit www.oracle.com if you need additional information or have any +questions. +--> + +<html> +<head> +<title> SpanishDiacriticsTest </title> +</head> +<body> +<applet code="SpanishDiacriticsTest.class" width=350 height=200></applet> + +Test run requires the following keyboard layout to be installed: +Windows OS: Spanish (United States) with 'Latin American' keyboard layout + +1. A frame with a text field should be displayed at upper left corner +2. Set focus to the text field and switch to Spanish with 'Latin American' keyboard layout +3. Type the following: ' ' o - i.e. single quote two times (using [ key on US keyboard) then o character. + +If you the text field displays ''o, (i.e. o should be without acute) then the test is passed; otherwise failed. +</body> +</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/test/java/awt/InputMethods/SpanishDiacriticsTest/SpanishDiacriticsTest.java Wed Nov 09 15:20:30 2016 +0300 @@ -0,0 +1,57 @@ +/* + * Copyright (c) 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 + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8169355 + * @summary Check if Spanish diacritical signs could be typed for TextField + * @author Dmitry Markov + * @run applet/manual=yesno SpanishDiacriticsTest.html +*/ + +import javax.swing.*; +import java.applet.Applet; +import java.awt.event.KeyAdapter; +import java.awt.event.KeyEvent; +import java.util.concurrent.locks.LockSupport; + +public class SpanishDiacriticsTest extends Applet { + @Override + public void init() { + SwingUtilities.invokeLater(() -> { + JFrame frame = new JFrame(); + JTextField textField = new JTextField(20); + textField.addKeyListener(new KeyAdapter() { + @Override + public void keyTyped(KeyEvent e) { + LockSupport.parkNanos(1_000_000_000L); + } + }); + frame.add(textField); + frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); + frame.pack(); + frame.setVisible(true); + }); + } +} +