diff options
| author | 2018-02-07 22:03:38 +0000 | |
|---|---|---|
| committer | 2018-02-07 22:03:38 +0000 | |
| commit | 3b60d0221c34b4546e6210a2d5fbf4aa0f8dca15 (patch) | |
| tree | b8dcd65a3fb9b5ae9bfbd043adbf805bccb540d6 | |
| parent | 1ab70f3b37ef0dae72fb9c0e53d7556faca081f3 (diff) | |
| parent | c1c572ef92bb282f9744af091b2be0584260952a (diff) | |
Merge "Close Dialog when ESC Pressed"
| -rw-r--r-- | core/java/android/app/Dialog.java | 25 |
1 files changed, 14 insertions, 11 deletions
diff --git a/core/java/android/app/Dialog.java b/core/java/android/app/Dialog.java index 2b648ea6937d..eb260265c15f 100644 --- a/core/java/android/app/Dialog.java +++ b/core/java/android/app/Dialog.java @@ -609,18 +609,19 @@ public class Dialog implements DialogInterface, Window.Callback, /** * A key was pressed down. + * <p> + * If the focused view didn't want this event, this method is called. + * <p> + * Default implementation consumes {@link KeyEvent#KEYCODE_BACK KEYCODE_BACK} + * and, as of {@link android.os.Build.VERSION_CODES#P P}, {@link KeyEvent#KEYCODE_ESCAPE + * KEYCODE_ESCAPE} to later handle them in {@link #onKeyUp}. * - * <p>If the focused view didn't want this event, this method is called. - * - * <p>The default implementation consumed the KEYCODE_BACK to later - * handle it in {@link #onKeyUp}. - * * @see #onKeyUp * @see android.view.KeyEvent */ @Override public boolean onKeyDown(int keyCode, @NonNull KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_BACK) { + if (keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_ESCAPE) { event.startTracking(); return true; } @@ -640,16 +641,18 @@ public class Dialog implements DialogInterface, Window.Callback, /** * A key was released. - * - * <p>The default implementation handles KEYCODE_BACK to close the - * dialog. + * <p> + * Default implementation consumes {@link KeyEvent#KEYCODE_BACK KEYCODE_BACK} + * and, as of {@link android.os.Build.VERSION_CODES#P P}, {@link KeyEvent#KEYCODE_ESCAPE + * KEYCODE_ESCAPE} to close the dialog. * * @see #onKeyDown - * @see KeyEvent + * @see android.view.KeyEvent */ @Override public boolean onKeyUp(int keyCode, @NonNull KeyEvent event) { - if (keyCode == KeyEvent.KEYCODE_BACK && event.isTracking() + if ((keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_ESCAPE) + && event.isTracking() && !event.isCanceled()) { onBackPressed(); return true; |