Loading core/java/android/app/Dialog.java +12 −3 Original line number Diff line number Diff line Loading @@ -454,12 +454,11 @@ public class Dialog implements DialogInterface, Window.Callback, */ protected void onStart() { if (mActionBar != null) mActionBar.setShowHideAnimationEnabled(true); if (mContext != null if (allowsRegisterDefaultOnBackInvokedCallback() && mContext != null && WindowOnBackInvokedDispatcher.isOnBackInvokedCallbackEnabled(mContext)) { // Add onBackPressed as default back behavior. mDefaultBackCallback = this::onBackPressed; getOnBackInvokedDispatcher().registerSystemOnBackInvokedCallback(mDefaultBackCallback); mDefaultBackCallback = null; } } Loading @@ -470,9 +469,18 @@ public class Dialog implements DialogInterface, Window.Callback, if (mActionBar != null) mActionBar.setShowHideAnimationEnabled(false); if (mDefaultBackCallback != null) { getOnBackInvokedDispatcher().unregisterOnBackInvokedCallback(mDefaultBackCallback); mDefaultBackCallback = null; } } /** * Whether this dialog allows to register the default onBackInvokedCallback. * @hide */ protected boolean allowsRegisterDefaultOnBackInvokedCallback() { return true; } private static final String DIALOG_SHOWING_TAG = "android:dialogShowing"; private static final String DIALOG_HIERARCHY_TAG = "android:dialogHierarchy"; Loading Loading @@ -697,7 +705,8 @@ public class Dialog implements DialogInterface, Window.Callback, if ((keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_ESCAPE) && event.isTracking() && !event.isCanceled() && !WindowOnBackInvokedDispatcher.isOnBackInvokedCallbackEnabled(mContext)) { && (!WindowOnBackInvokedDispatcher.isOnBackInvokedCallbackEnabled(mContext) || !allowsRegisterDefaultOnBackInvokedCallback())) { onBackPressed(); return true; } Loading core/java/android/inputmethodservice/SoftInputWindow.java +7 −0 Original line number Diff line number Diff line Loading @@ -79,6 +79,13 @@ final class SoftInputWindow extends Dialog { @WindowState private int mWindowState = WindowState.TOKEN_PENDING; @Override protected boolean allowsRegisterDefaultOnBackInvokedCallback() { // Do not register OnBackInvokedCallback from Dialog#onStart, InputMethodService will // register CompatOnBackInvokedCallback for input method window. return false; } /** * Set {@link IBinder} window token to the window. * Loading Loading
core/java/android/app/Dialog.java +12 −3 Original line number Diff line number Diff line Loading @@ -454,12 +454,11 @@ public class Dialog implements DialogInterface, Window.Callback, */ protected void onStart() { if (mActionBar != null) mActionBar.setShowHideAnimationEnabled(true); if (mContext != null if (allowsRegisterDefaultOnBackInvokedCallback() && mContext != null && WindowOnBackInvokedDispatcher.isOnBackInvokedCallbackEnabled(mContext)) { // Add onBackPressed as default back behavior. mDefaultBackCallback = this::onBackPressed; getOnBackInvokedDispatcher().registerSystemOnBackInvokedCallback(mDefaultBackCallback); mDefaultBackCallback = null; } } Loading @@ -470,9 +469,18 @@ public class Dialog implements DialogInterface, Window.Callback, if (mActionBar != null) mActionBar.setShowHideAnimationEnabled(false); if (mDefaultBackCallback != null) { getOnBackInvokedDispatcher().unregisterOnBackInvokedCallback(mDefaultBackCallback); mDefaultBackCallback = null; } } /** * Whether this dialog allows to register the default onBackInvokedCallback. * @hide */ protected boolean allowsRegisterDefaultOnBackInvokedCallback() { return true; } private static final String DIALOG_SHOWING_TAG = "android:dialogShowing"; private static final String DIALOG_HIERARCHY_TAG = "android:dialogHierarchy"; Loading Loading @@ -697,7 +705,8 @@ public class Dialog implements DialogInterface, Window.Callback, if ((keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_ESCAPE) && event.isTracking() && !event.isCanceled() && !WindowOnBackInvokedDispatcher.isOnBackInvokedCallbackEnabled(mContext)) { && (!WindowOnBackInvokedDispatcher.isOnBackInvokedCallbackEnabled(mContext) || !allowsRegisterDefaultOnBackInvokedCallback())) { onBackPressed(); return true; } Loading
core/java/android/inputmethodservice/SoftInputWindow.java +7 −0 Original line number Diff line number Diff line Loading @@ -79,6 +79,13 @@ final class SoftInputWindow extends Dialog { @WindowState private int mWindowState = WindowState.TOKEN_PENDING; @Override protected boolean allowsRegisterDefaultOnBackInvokedCallback() { // Do not register OnBackInvokedCallback from Dialog#onStart, InputMethodService will // register CompatOnBackInvokedCallback for input method window. return false; } /** * Set {@link IBinder} window token to the window. * Loading