diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipMenuController.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipMenuController.java index 140f32f9eb7f8..02451c30d4ef2 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipMenuController.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PhonePipMenuController.java @@ -18,8 +18,6 @@ package com.android.wm.shell.pip.phone; import static android.view.WindowManager.SHELL_ROOT_LAYER_PIP; -import static com.android.wm.shell.pip.phone.PipMenuView.ANIM_TYPE_HIDE; - import android.annotation.Nullable; import android.app.RemoteAction; import android.content.Context; @@ -399,7 +397,10 @@ public class PhonePipMenuController implements PipMenuController { * Hides the menu view. */ public void hideMenu() { - hideMenu(ANIM_TYPE_HIDE, true /* resize */); + final boolean isMenuVisible = isMenuVisible(); + if (isMenuVisible) { + mPipMenuView.hideMenu(); + } } /** diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuView.java b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuView.java index e21083569c41b..67b1e6dd4cc76 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuView.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/pip/phone/PipMenuView.java @@ -130,6 +130,11 @@ public class PipMenuView extends FrameLayout { private ShellExecutor mMainExecutor; private Handler mMainHandler; + /** + * Whether the most recent showing of the menu caused a PIP resize, such as when PIP is too + * small and it is resized on menu show to fit the actions. + */ + private boolean mDidLastShowMenuResize; private final Runnable mHideMenuRunnable = this::hideMenu; protected View mViewRoot; @@ -245,6 +250,7 @@ public class PipMenuView extends FrameLayout { void showMenu(int menuState, Rect stackBounds, boolean allowMenuTimeout, boolean resizeMenuOnShow, boolean withDelay, boolean showResizeHandle) { mAllowMenuTimeout = allowMenuTimeout; + mDidLastShowMenuResize = resizeMenuOnShow; if (mMenuState != menuState) { // Disallow touches if the menu needs to resize while showing, and we are transitioning // to/from a full menu state. @@ -340,7 +346,7 @@ public class PipMenuView extends FrameLayout { } void hideMenu(Runnable animationEndCallback) { - hideMenu(animationEndCallback, true /* notifyMenuVisibility */, true /* resize */, + hideMenu(animationEndCallback, true /* notifyMenuVisibility */, mDidLastShowMenuResize, ANIM_TYPE_HIDE); }