Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2a572ee7 authored by blk_jack's avatar blk_jack Committed by Gerrit Code Review
Browse files

Fix home/menu unlock with longpress hardware key actions

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
parent d4eacbe7
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -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,10 +749,16 @@ 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)) {
        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;
    }