summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorblk_jack <jcorcoran+github@gmail.com>2012-11-03 22:06:18 -0400
committerGerrit Code Review <gerrit@review.cyanogenmod.com>2012-11-12 10:33:13 -0800
commit2a572ee7587cb0b686871e95567313aa8bc8bfd5 (patch)
tree53277adb17d2dfe85431eb84cccd0973b6c86743
parentd4eacbe70db0c7cdf696b324927b353518d5b0d0 (diff)
downloadandroid_frameworks_base-jellybean-stable.tar.gz
android_frameworks_base-jellybean-stable.tar.bz2
android_frameworks_base-jellybean-stable.zip
Fix home/menu unlock with longpress hardware key actionsjellybean-stable
Also fixes issue where home ACTION_DOWN was waking and ACTION_UP was unlocking the device in a single press. Patchset 4: mUnlockKeyDown reset properly Change-Id: Ib4408070fc207c8e2b4230540a551bfed718787d
-rw-r--r--policy/src/com/android/internal/policy/impl/LockScreen.java14
1 files changed, 11 insertions, 3 deletions
diff --git a/policy/src/com/android/internal/policy/impl/LockScreen.java b/policy/src/com/android/internal/policy/impl/LockScreen.java
index c2fbbbc7854..5c1514af489 100644
--- a/policy/src/com/android/internal/policy/impl/LockScreen.java
+++ b/policy/src/com/android/internal/policy/impl/LockScreen.java
@@ -95,6 +95,7 @@ class LockScreen extends LinearLayout implements KeyguardScreen {
private boolean mSilentMode;
private AudioManager mAudioManager;
private boolean mEnableMenuKeyInLockScreen;
+ private boolean mUnlockKeyDown = false;
private KeyguardStatusViewManager mStatusViewManager;
private UnlockWidgetCommonMethods mUnlockWidgetMethods;
@@ -736,6 +737,7 @@ class LockScreen extends LinearLayout implements KeyguardScreen {
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
+ mUnlockKeyDown = true;
if (keyCode == KeyEvent.KEYCODE_BACK
|| keyCode == KeyEvent.KEYCODE_HOME
|| keyCode == KeyEvent.KEYCODE_MENU) {
@@ -747,9 +749,15 @@ class LockScreen extends LinearLayout implements KeyguardScreen {
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
- if ((keyCode == KeyEvent.KEYCODE_MENU && mEnableMenuKeyInLockScreen) ||
- (keyCode == KeyEvent.KEYCODE_HOME && mHomeUnlockScreen)) {
- mCallback.goToUnlockScreen();
+ int flags = event.getFlags();
+ // make sure the keydown is from a screen on state
+ if (mUnlockKeyDown) {
+ mUnlockKeyDown = false;
+ boolean mNotLongPress = (flags & KeyEvent.FLAG_CANCELED_LONG_PRESS) == 0;
+ if (mNotLongPress && ((keyCode == KeyEvent.KEYCODE_MENU && mEnableMenuKeyInLockScreen) ||
+ (keyCode == KeyEvent.KEYCODE_HOME && mHomeUnlockScreen))) {
+ mCallback.goToUnlockScreen();
+ }
}
return false;
}