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

Commit 0a34d9ed authored by Jim Miller's avatar Jim Miller
Browse files

Fix unresponsive back button in keyguard.

When keyguard doesn't have focus, events weren't being propagated to
keyguard properly.  The fix is to grab the back-button event from the
top-level view and handle it there.

Change-Id: Ied9761919cff30173f43f03e4c2a1732387e618e
parent f5e2b2c2
Loading
Loading
Loading
Loading
+8 −11
Original line number Diff line number Diff line
@@ -254,17 +254,6 @@ public class KeyguardHostView extends KeyguardViewBase {
        dialog.show();
    }

    @Override
    public boolean dispatchKeyEvent(KeyEvent event) {
        if (event.getAction() == KeyEvent.ACTION_UP
                && event.getKeyCode() == KeyEvent.KEYCODE_BACK
                && mCurrentSecuritySelection != SecurityMode.None) {
            mCallback.dismiss(false);
            return true;
        }
        return super.dispatchKeyEvent(event);
    }

    private void showTimeoutDialog() {
        int timeoutInSeconds = (int) LockPatternUtils.FAILED_ATTEMPT_TIMEOUT_MS / 1000;
        int messageId = 0;
@@ -856,4 +845,12 @@ public class KeyguardHostView extends KeyguardViewBase {
        mAppWidgetContainer.setCurrentPage(getWidgetPosition(R.id.keyguard_multi_user_selector));
    }

    public boolean handleBackKey() {
        if (mCurrentSecuritySelection != SecurityMode.None) {
            mCallback.dismiss(false);
            return true;
        }
        return false;
    }

}
+12 −0
Original line number Diff line number Diff line
@@ -126,6 +126,18 @@ public class KeyguardViewManager {
            super.onConfigurationChanged(newConfig);
            maybeCreateKeyguardLocked(shouldEnableScreenRotation(), null);
        }

        @Override
        public boolean dispatchKeyEvent(KeyEvent event) {
            if (event.getAction() == KeyEvent.ACTION_DOWN
                    && event.getKeyCode() == KeyEvent.KEYCODE_BACK
                    && mKeyguardView != null) {
                if (mKeyguardView.handleBackKey()) {
                    return true;
                }
            }
            return super.dispatchKeyEvent(event);
        }
    }

    SparseArray<Parcelable> mStateContainer = new SparseArray<Parcelable>();