From 3cff56b678c42154049d8d78a02a5afa4d9e54f4 Mon Sep 17 00:00:00 2001 From: Chris Banes Date: Tue, 26 Apr 2016 12:53:59 +0100 Subject: [PATCH] Fix onPrepareActionMode() not being called Happens because mActionMode was set at the end of the call, which means that invalidate() doesn't actually do anything. BUG: 28392319 Change-Id: Ifdc97c03dc43bfbe74790f90764d1575bd9ca951 --- core/java/com/android/internal/app/WindowDecorActionBar.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core/java/com/android/internal/app/WindowDecorActionBar.java b/core/java/com/android/internal/app/WindowDecorActionBar.java index c6bf1b46becf1..a09dbe553c7cd 100644 --- a/core/java/com/android/internal/app/WindowDecorActionBar.java +++ b/core/java/com/android/internal/app/WindowDecorActionBar.java @@ -505,6 +505,9 @@ public class WindowDecorActionBar extends ActionBar implements mContextView.killMode(); ActionModeImpl mode = new ActionModeImpl(mContextView.getContext(), callback); if (mode.dispatchOnCreate()) { + // This needs to be set before invalidate() so that it calls + // onPrepareActionMode() + mActionMode = mode; mode.invalidate(); mContextView.initForMode(mode); animateToMode(true); @@ -518,7 +521,6 @@ public class WindowDecorActionBar extends ActionBar implements } } mContextView.sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED); - mActionMode = mode; return mode; } return null;