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
This commit is contained in:
Adrian Roos
2016-07-18 14:23:32 -07:00
parent c50f8ae532
commit 56cf73a0f4
2 changed files with 20 additions and 11 deletions

View File

@@ -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

View File

@@ -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) {
defocusIfNeeded(true /* animate */);
final InputMethodManager imm = InputMethodManager.getInstance();
imm.hideSoftInputFromWindow(getWindowToken(), 0);
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.onKeyPreIme(keyCode, event);
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
defocusIfNeeded(true /* animate */);
return true;
}
return super.onKeyUp(keyCode, event);
}
@Override