--- old/src/java.desktop/macosx/classes/sun/lwawt/macosx/CInputMethodDescriptor.java 2017-02-13 22:34:31.000000000 +0300 +++ new/src/java.desktop/macosx/classes/sun/lwawt/macosx/CInputMethodDescriptor.java 2017-02-13 22:34:31.000000000 +0300 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2011, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2011, 2017, 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 @@ -57,15 +57,19 @@ } static Object[] getAvailableLocalesInternal() { - List workList = nativeGetAvailableLocales(); + List workList = nativeGetAvailableLocales(); + Locale currentLocale = CInputMethod.getNativeLocale(); - if (workList != null) { + if (workList == null || (workList != null && workList.isEmpty())) { + return new Object[] { + currentLocale != null ? currentLocale : Locale.getDefault() + }; + } else { + if (currentLocale != null && !workList.contains(currentLocale)) { + workList.add(currentLocale); + } return workList.toArray(); } - - return new Object[] { - Locale.getDefault() - }; } /** @@ -119,5 +123,5 @@ } private static native void nativeInit(); - private static native List nativeGetAvailableLocales(); + private static native List nativeGetAvailableLocales(); }