Merge "Only resize the menu on hide if it was resized on show" into sc-dev

This commit is contained in:
TreeHugger Robot
2021-05-20 19:31:26 +00:00
committed by Android (Google) Code Review
2 changed files with 11 additions and 4 deletions

View File

@@ -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();
}
}
/**

View File

@@ -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);
}