From a1e6358a4c62c8b6de1f2428901e45b688bd9e9f Mon Sep 17 00:00:00 2001 From: Adam Powell Date: Tue, 18 Jan 2011 16:51:22 -0800 Subject: [PATCH] Fix bug 3365208 - Contextual Action Bar is not displayed when the context item is changing Change-Id: I9e7ec4ab14c6008397d26c499ccf478f8875f918 --- core/java/com/android/internal/app/ActionBarImpl.java | 1 + .../android/internal/widget/ActionBarContextView.java | 10 +++------- .../com/android/internal/policy/impl/PhoneWindow.java | 1 + 3 files changed, 5 insertions(+), 7 deletions(-) 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 68c1453b8d756..646b719b62b58 100644 --- a/policy/src/com/android/internal/policy/impl/PhoneWindow.java +++ b/policy/src/com/android/internal/policy/impl/PhoneWindow.java @@ -1983,6 +1983,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();