summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDianne Hackborn <hackbod@google.com>2009-06-29 12:00:39 -0700
committerDianne Hackborn <hackbod@google.com>2009-06-29 12:00:39 -0700
commit86d56cca9ce23b0f4814418d7c71ec11ea9fd278 (patch)
tree243efa786bd7e18843e619d0348edc81168666b4
parentbd9aa793b19f7aa529ca4123492f8940b96486b8 (diff)
downloadframeworks_base-86d56cca9ce23b0f4814418d7c71ec11ea9fd278.zip
frameworks_base-86d56cca9ce23b0f4814418d7c71ec11ea9fd278.tar.gz
frameworks_base-86d56cca9ce23b0f4814418d7c71ec11ea9fd278.tar.bz2
Generate key events for actions sent to generic input connections.
There is a compatibility issue with the cupcake IME where the generic input connection would just consume actions. Late in cupcake this stuff was reworked so that the IME would send an action command to the app instead of an enter key event, and the compatibility code got lost.
-rw-r--r--core/java/android/view/inputmethod/BaseInputConnection.java13
1 files changed, 11 insertions, 2 deletions
diff --git a/core/java/android/view/inputmethod/BaseInputConnection.java b/core/java/android/view/inputmethod/BaseInputConnection.java
index 9a0f467..7393737 100644
--- a/core/java/android/view/inputmethod/BaseInputConnection.java
+++ b/core/java/android/view/inputmethod/BaseInputConnection.java
@@ -340,10 +340,19 @@ public class BaseInputConnection implements InputConnection {
}
/**
- * The default implementation does nothing.
+ * The default implementation turns this into the enter key.
*/
public boolean performEditorAction(int actionCode) {
- return false;
+ long eventTime = SystemClock.uptimeMillis();
+ sendKeyEvent(new KeyEvent(eventTime, eventTime,
+ KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER, 0, 0, 0, 0,
+ KeyEvent.FLAG_SOFT_KEYBOARD | KeyEvent.FLAG_KEEP_TOUCH_MODE
+ | KeyEvent.FLAG_EDITOR_ACTION));
+ sendKeyEvent(new KeyEvent(SystemClock.uptimeMillis(), eventTime,
+ KeyEvent.ACTION_UP, KeyEvent.KEYCODE_ENTER, 0, 0, 0, 0,
+ KeyEvent.FLAG_SOFT_KEYBOARD | KeyEvent.FLAG_KEEP_TOUCH_MODE
+ | KeyEvent.FLAG_EDITOR_ACTION));
+ return true;
}
/**