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

Commit 56cf73a0 authored by Adrian Roos's avatar Adrian Roos
Browse files

Direct Reply: Allow closing IME separately from DirectReply mode

If the IME is showing, the first BACK now closes just
the IME instead of also closing the Direct Reply mode.
Subsequent back closes the notification panel as usual.

Change-Id: Ic4b5a4d6b528a211c2fa0c8b5ceb0f7017c09400
Fixes: 29996385
parent c50f8ae5
Loading
Loading
Loading
Loading
+7 −4
Original line number Diff line number Diff line
@@ -190,6 +190,12 @@ public class StatusBarWindowView extends FrameLayout {

    @Override
    public boolean dispatchKeyEvent(KeyEvent event) {
        if (mService.interceptMediaKey(event)) {
            return true;
        }
        if (super.dispatchKeyEvent(event)) {
            return true;
        }
        boolean down = event.getAction() == KeyEvent.ACTION_DOWN;
        switch (event.getKeyCode()) {
            case KeyEvent.KEYCODE_BACK:
@@ -214,10 +220,7 @@ public class StatusBarWindowView extends FrameLayout {
                }
                break;
        }
        if (mService.interceptMediaKey(event)) {
            return true;
        }
        return super.dispatchKeyEvent(event);
        return false;
    }

    @Override
+12 −6
Original line number Diff line number Diff line
@@ -366,7 +366,6 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene
     * @return true if a matching action was found, false otherwise
     */
    public boolean updatePendingIntentFromActions(Notification.Action[] actions) {
        boolean found = false;
        if (mPendingIntent == null || actions == null) {
            return false;
        }
@@ -473,14 +472,21 @@ public class RemoteInputView extends LinearLayout implements View.OnClickListene
        }

        @Override
        public boolean onKeyPreIme(int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_UP) {
        public boolean onKeyDown(int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                // Eat the DOWN event here to prevent any default behavior.
                return true;
            }
            return super.onKeyDown(keyCode, event);
        }

        @Override
        public boolean onKeyUp(int keyCode, KeyEvent event) {
            if (keyCode == KeyEvent.KEYCODE_BACK) {
                defocusIfNeeded(true /* animate */);
                final InputMethodManager imm = InputMethodManager.getInstance();
                imm.hideSoftInputFromWindow(getWindowToken(), 0);
                return true;
            }
            return super.onKeyPreIme(keyCode, event);
            return super.onKeyUp(keyCode, event);
        }

        @Override