8163979: [macosx] Chinese text shows as Latin w/ openVanilla input method
authordmarkov
Tue, 14 Feb 2017 15:47:58 +0300
changeset 44126 be3651a1bc26
parent 43835 bb3935761c12
child 44127 24687ab2203e
8163979: [macosx] Chinese text shows as Latin w/ openVanilla input method Reviewed-by: prr, serb
jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CInputMethodDescriptor.java
--- a/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CInputMethodDescriptor.java	Tue Feb 14 11:24:21 2017 +0530
+++ b/jdk/src/java.desktop/macosx/classes/sun/lwawt/macosx/CInputMethodDescriptor.java	Tue Feb 14 15:47:58 2017 +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<Object> workList = nativeGetAvailableLocales();
+        Locale currentLocale = CInputMethod.getNativeLocale();
 
-        if (workList != null) {
+        if (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<Object> nativeGetAvailableLocales();
 }