diff --git a/core/java/com/android/internal/app/ActionBarImpl.java b/core/java/com/android/internal/app/ActionBarImpl.java index 0e31feff27f56..a8eb6fe04047c 100644 --- a/core/java/com/android/internal/app/ActionBarImpl.java +++ b/core/java/com/android/internal/app/ActionBarImpl.java @@ -388,6 +388,7 @@ public class ActionBarImpl extends ActionBar { mActionMode.finish(); } + mUpperContextView.killMode(); ActionMode mode = new ActionModeImpl(callback); if (callback.onCreateActionMode(mode, mode.getMenu())) { mode.invalidate(); diff --git a/core/java/com/android/internal/widget/ActionBarContextView.java b/core/java/com/android/internal/widget/ActionBarContextView.java index 31e7bab76174e..bb0c752200926 100644 --- a/core/java/com/android/internal/widget/ActionBarContextView.java +++ b/core/java/com/android/internal/widget/ActionBarContextView.java @@ -160,10 +160,6 @@ public class ActionBarContextView extends ViewGroup implements AnimatorListener } public void initForMode(final ActionMode mode) { - if (mAnimationMode != ANIMATE_IDLE || mAnimateInOnLayout) { - killMode(); - } - if (mClose == null) { LayoutInflater inflater = LayoutInflater.from(mContext); mClose = inflater.inflate(R.layout.action_mode_close_item, this, false); @@ -198,15 +194,15 @@ public class ActionBarContextView extends ViewGroup implements AnimatorListener return; } - mAnimationMode = ANIMATE_OUT; finishAnimation(); + mAnimationMode = ANIMATE_OUT; mCurrentAnimation = makeOutAnimation(); mCurrentAnimation.start(); } private void finishAnimation() { final Animator a = mCurrentAnimation; - if (a != null && a.isRunning()) { + if (a != null) { mCurrentAnimation = null; a.end(); } @@ -448,7 +444,7 @@ public class ActionBarContextView extends ViewGroup implements AnimatorListener @Override public void onAnimationEnd(Animator animation) { - if (mAnimationMode != ANIMATE_IN) { + if (mAnimationMode == ANIMATE_OUT) { killMode(); } mAnimationMode = ANIMATE_IDLE; diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindow.java b/policy/src/com/android/internal/policy/impl/PhoneWindow.java index fb20e812cce7c..1d0b6330955e3 100644 --- a/policy/src/com/android/internal/policy/impl/PhoneWindow.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindow.java @@ -1985,6 +1985,7 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback { } if (mActionModeView != null) { + mActionModeView.killMode(); mode = new StandaloneActionMode(getContext(), mActionModeView, wrappedCallback); if (callback.onCreateActionMode(mode, mode.getMenu())) { mode.invalidate();