Chromium Code Reviews| Index: content/public/android/java/src/org/chromium/content/browser/ImeAdapter.java |
| diff --git a/content/public/android/java/src/org/chromium/content/browser/ImeAdapter.java b/content/public/android/java/src/org/chromium/content/browser/ImeAdapter.java |
| index 88f9578f731751adf0b262c3155a8aa4fa608839..1a70d66a96877f2d1394be348eb287fafa122fc7 100644 |
| --- a/content/public/android/java/src/org/chromium/content/browser/ImeAdapter.java |
| +++ b/content/public/android/java/src/org/chromium/content/browser/ImeAdapter.java |
| @@ -117,7 +117,6 @@ class ImeAdapter { |
| private int mNativeImeAdapterAndroid; |
| private int mTextInputType; |
| - private int mPreImeEventCount; |
| private Context mContext; |
| private SelectionHandleController mSelectionHandleController; |
| @@ -152,7 +151,6 @@ class ImeAdapter { |
| ImeAdapter(Context context, SelectionHandleController selectionHandleController, |
| InsertionHandleController insertionHandleController, ViewEmbedder embedder) { |
| - mPreImeEventCount = 0; |
| mContext = context; |
| mSelectionHandleController = selectionHandleController; |
| mInsertionHandleController = insertionHandleController; |
| @@ -302,14 +300,7 @@ class ImeAdapter { |
| return InputDialogContainer.isDialogInputType(mTextInputType); |
| } |
| - void dispatchKeyEventPreIme(KeyEvent event) { |
| - // We only register that a key was pressed, but we don't actually intercept |
| - // it. |
| - ++mPreImeEventCount; |
| - } |
| - |
| boolean dispatchKeyEvent(KeyEvent event) { |
| - mPreImeEventCount = 0; |
| return translateAndSendNativeEvents(event); |
| } |
| @@ -341,15 +332,16 @@ class ImeAdapter { |
| mInsertionHandleController.hideAndDisallowAutomaticShowing(); |
| } |
| mViewEmbedder.onImeEvent(isFinish); |
| - boolean hasSingleChar = mPreImeEventCount == 1 && text.length() == 1; |
| - int keyCode = hasSingleChar ? text.codePointAt(0) : COMPOSITION_KEY_CODE; |
| - int keyChar = hasSingleChar ? text.codePointAt(0) : 0; |
| + boolean hasSingleChar = text.length() == 1; |
|
aurimas (slooooooooow)
2013/01/16 00:39:57
This is not needed anymore since shouldSendKeyEven
Yusuf
2013/01/16 08:07:57
Done.
|
| + int keyCode = shouldSendKeyEventWithKeyCode(text); |
| + int keyChar = keyCode == COMPOSITION_KEY_CODE ? 0 : text.codePointAt(0); |
| long timeStampMs = System.currentTimeMillis(); |
| + |
| nativeSendSyntheticKeyEvent(mNativeImeAdapterAndroid, sEventTypeRawKeyDown, |
| - timeStampMs, keyCode, keyChar); |
| - if (hasSingleChar) { |
| + timeStampMs, keyCode, keyChar); |
| + if (hasSingleChar && keyCode != COMPOSITION_KEY_CODE) { |
| nativeSendSyntheticKeyEvent(mNativeImeAdapterAndroid, sEventTypeChar, |
| - timeStampMs, text.codePointAt(0), text.codePointAt(0)); |
| + timeStampMs, keyCode, keyChar); |
|
Ted C
2013/01/16 02:13:30
previously this sent the same two values...now you
Yusuf
2013/01/16 08:07:57
Sadly this part of the code never really worked fo
|
| } else { |
| if (isCommit) { |
| nativeCommitText(mNativeImeAdapterAndroid, text); |
| @@ -359,10 +351,15 @@ class ImeAdapter { |
| } |
| nativeSendSyntheticKeyEvent(mNativeImeAdapterAndroid, sEventTypeKeyUp, |
| timeStampMs, keyCode, keyChar); |
| - mPreImeEventCount = 0; |
| return true; |
| } |
| + private int shouldSendKeyEventWithKeyCode(String singleChar) { |
|
aurimas (slooooooooow)
2013/01/16 00:39:57
Might not be a single char, should call it some ot
Yusuf
2013/01/16 08:07:57
Done.
|
| + if (singleChar.equals("\n")) return KeyEvent.KEYCODE_ENTER; |
| + else if (singleChar.equals("\t")) return KeyEvent.KEYCODE_TAB; |
| + else return COMPOSITION_KEY_CODE; |
| + } |
| + |
| private boolean translateAndSendNativeEvents(KeyEvent event) { |
| if (mNativeImeAdapterAndroid == 0) { |
| return false; |