summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/app/Dialog.java21
1 files changed, 21 insertions, 0 deletions
diff --git a/core/java/android/app/Dialog.java b/core/java/android/app/Dialog.java
index 7a6941924f03..72e63836447e 100644
--- a/core/java/android/app/Dialog.java
+++ b/core/java/android/app/Dialog.java
@@ -110,6 +110,8 @@ public class Dialog implements DialogInterface, Window.Callback,
private Handler mListenersHandler;
+ private ActionMode mActionMode;
+
private final Runnable mDismissAction = new Runnable() {
public void run() {
dismissDialog();
@@ -310,6 +312,9 @@ public class Dialog implements DialogInterface, Window.Callback,
try {
mWindowManager.removeView(mDecor);
} finally {
+ if (mActionMode != null) {
+ mActionMode.finish();
+ }
mDecor = null;
mWindow.closeAllPanels();
onStop();
@@ -952,10 +957,26 @@ public class Dialog implements DialogInterface, Window.Callback,
return null;
}
+ /**
+ * {@inheritDoc}
+ *
+ * Note that if you override this method you should always call through
+ * to the superclass implementation by calling super.onActionModeStarted(mode).
+ */
public void onActionModeStarted(ActionMode mode) {
+ mActionMode = mode;
}
+ /**
+ * {@inheritDoc}
+ *
+ * Note that if you override this method you should always call through
+ * to the superclass implementation by calling super.onActionModeFinished(mode).
+ */
public void onActionModeFinished(ActionMode mode) {
+ if (mode == mActionMode) {
+ mActionMode = null;
+ }
}
/**