fix 2517656 Pin/Password Unlocks place focus on the launcher screen when they shouldn't
PasswordEntryKeyboardHelper now sets the FLAG_KEEP_TOUCH_MODE flag for the events
so that the last event we process from the soft keybaord doesn't exit touch mode
and we don't erroneously go into non-touch mode since the on-screen button pressing
left us in touch mode.
Change-Id: Id2546ec3bc4b337aedb5e925de0c709ce62ea059
diff --git a/core/java/com/android/internal/widget/PasswordEntryKeyboardHelper.java b/core/java/com/android/internal/widget/PasswordEntryKeyboardHelper.java
index 28bf6bb..53720e4 100644
--- a/core/java/com/android/internal/widget/PasswordEntryKeyboardHelper.java
+++ b/core/java/com/android/internal/widget/PasswordEntryKeyboardHelper.java
@@ -106,12 +106,16 @@
mKeyboardMode = mode;
}
- private void sendKeyEventsToTarget(int keyEventCode) {
+ private void sendKeyEventsToTarget(int character) {
Handler handler = mTargetView.getHandler();
KeyEvent[] events = KeyCharacterMap.load(KeyCharacterMap.ALPHA).getEvents(
- new char[] { (char) keyEventCode });
+ new char[] { (char) character });
if (events != null) {
- for (KeyEvent event : events) {
+ final int N = events.length;
+ for (int i=0; i<N; i++) {
+ KeyEvent event = events[i];
+ event = KeyEvent.changeFlags(event, event.getFlags()
+ | KeyEvent.FLAG_SOFT_KEYBOARD | KeyEvent.FLAG_KEEP_TOUCH_MODE);
handler.sendMessage(handler.obtainMessage(ViewRoot.DISPATCH_KEY, event));
}
}