From 83ffff2a49beeb41874b7cb40819a75001f708e2 Mon Sep 17 00:00:00 2001 From: Ken Wakasa Date: Tue, 26 Jul 2011 07:55:12 +0900 Subject: [PATCH] Take care of bidi-mirrored characters in suggestion strip as well Follow up to I1b884848 bug: 5047217 Change-Id: I18b9962c4943363bae88009354fcc75ab60ad2ba --- java/src/com/android/inputmethod/keyboard/Key.java | 2 +- java/src/com/android/inputmethod/latin/LatinIME.java | 8 +++++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java index 8b8930a86..f883fb4db 100644 --- a/java/src/com/android/inputmethod/keyboard/Key.java +++ b/java/src/com/android/inputmethod/keyboard/Key.java @@ -179,7 +179,7 @@ public class Key { sRtlParenthesisMap.put(right, left); } - private static int getRtlParenthesisCode(int code) { + public static int getRtlParenthesisCode(int code) { if (sRtlParenthesisMap.containsKey(code)) { return sRtlParenthesisMap.get(code); } else { diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java index 3457ac984..a8118e549 100644 --- a/java/src/com/android/inputmethod/latin/LatinIME.java +++ b/java/src/com/android/inputmethod/latin/LatinIME.java @@ -60,6 +60,7 @@ import com.android.inputmethod.compat.SuggestionSpanUtils; import com.android.inputmethod.deprecated.LanguageSwitcherProxy; import com.android.inputmethod.deprecated.VoiceProxy; import com.android.inputmethod.deprecated.recorrection.Recorrection; +import com.android.inputmethod.keyboard.Key; import com.android.inputmethod.keyboard.Keyboard; import com.android.inputmethod.keyboard.KeyboardActionListener; import com.android.inputmethod.keyboard.KeyboardSwitcher; @@ -1695,7 +1696,12 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar // for punctuation entered through the suggestion strip, it should be considered // a magic space even if it was a normal space. This is meant to help in case the user // pressed space on purpose of displaying the suggestion strip punctuation. - final char primaryCode = suggestion.charAt(0); + final int rawPrimaryCode = suggestion.charAt(0); + // Maybe apply the "bidi mirrored" conversions for parentheses + final LatinKeyboard keyboard = mKeyboardSwitcher.getLatinKeyboard(); + final int primaryCode = keyboard.isRtlKeyboard() + ? Key.getRtlParenthesisCode(rawPrimaryCode) : rawPrimaryCode; + final CharSequence beforeText = ic != null ? ic.getTextBeforeCursor(1, 0) : ""; final int toLeft = (ic == null || TextUtils.isEmpty(beforeText)) ? 0 : beforeText.charAt(0);