From cfe9aee72836b80b94465621374c2eff915e9a1b Mon Sep 17 00:00:00 2001 From: Adam Powell Date: Tue, 1 Nov 2011 14:56:27 -0700 Subject: [PATCH] Fix bug 5528574 - "View not attached to window manager" upon orientation change when there is a dialog with ActionMode on Fix a bug closing down active action modes as dialogs are closing. Change-Id: I0d28e3b3845d5ed50fbb55b180dafa1b11957b81 --- core/java/android/app/Dialog.java | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/core/java/android/app/Dialog.java b/core/java/android/app/Dialog.java index 7a6941924f030..72e63836447eb 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; + } } /**