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; |