Merge "Update task bar height update logic to consider screen rotation cases" into main
diff --git a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java
index 6d4fc18..bd44a35 100644
--- a/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/NavbarButtonsViewController.java
@@ -237,7 +237,7 @@
DeviceProfile deviceProfile = mContext.getDeviceProfile();
Resources resources = mContext.getResources();
Point p = !mContext.isUserSetupComplete()
- ? new Point(0, mControllers.taskbarActivityContext.getSetupWindowHeight())
+ ? new Point(0, mControllers.taskbarActivityContext.getSetupWindowSize())
: DimensionUtils.getTaskbarPhoneDimensions(deviceProfile, resources,
mContext.isPhoneMode());
mNavButtonsView.getLayoutParams().height = p.y;
@@ -733,7 +733,7 @@
navButtonsLayoutParams.setMarginEnd(0);
navButtonsLayoutParams.gravity = Gravity.START;
mNavButtonsView.getLayoutParams().height =
- mControllers.taskbarActivityContext.getSetupWindowHeight();
+ mControllers.taskbarActivityContext.getSetupWindowSize();
mNavButtonContainer.setLayoutParams(navButtonsLayoutParams);
}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
index 4b95d7b..9f65f81 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarActivityContext.java
@@ -165,7 +165,7 @@
private WindowManager.LayoutParams mWindowLayoutParams;
private boolean mIsFullscreen;
// The size we should return to when we call setTaskbarWindowFullscreen(false)
- private int mLastRequestedNonFullscreenHeight;
+ private int mLastRequestedNonFullscreenSize;
private NavigationMode mNavMode;
private boolean mImeDrawsImeNavBar;
@@ -364,7 +364,7 @@
public void init(@NonNull TaskbarSharedState sharedState) {
mImeDrawsImeNavBar = getBoolByName(IME_DRAWS_IME_NAV_BAR_RES_NAME, getResources(), false);
- mLastRequestedNonFullscreenHeight = getDefaultTaskbarWindowHeight();
+ mLastRequestedNonFullscreenSize = getDefaultTaskbarWindowSize();
mWindowLayoutParams = createAllWindowParams();
// Initialize controllers after all are constructed.
@@ -485,7 +485,7 @@
}
WindowManager.LayoutParams windowLayoutParams = new WindowManager.LayoutParams(
MATCH_PARENT,
- mLastRequestedNonFullscreenHeight,
+ mLastRequestedNonFullscreenSize,
type,
windowFlags,
PixelFormat.TRANSLUCENT);
@@ -530,16 +530,16 @@
case Surface.ROTATION_0, Surface.ROTATION_180 -> {
// Defaults are fine
width = WindowManager.LayoutParams.MATCH_PARENT;
- height = mLastRequestedNonFullscreenHeight;
+ height = mLastRequestedNonFullscreenSize;
gravity = Gravity.BOTTOM;
}
case Surface.ROTATION_90 -> {
- width = mLastRequestedNonFullscreenHeight;
+ width = mLastRequestedNonFullscreenSize;
height = WindowManager.LayoutParams.MATCH_PARENT;
gravity = Gravity.END;
}
case Surface.ROTATION_270 -> {
- width = mLastRequestedNonFullscreenHeight;
+ width = mLastRequestedNonFullscreenSize;
height = WindowManager.LayoutParams.MATCH_PARENT;
gravity = Gravity.START;
}
@@ -564,7 +564,7 @@
public void onConfigurationChanged(@Config int configChanges) {
mControllers.onConfigurationChanged(configChanges);
if (!mIsUserSetupComplete) {
- setTaskbarWindowHeight(getSetupWindowHeight());
+ setTaskbarWindowSize(getSetupWindowSize());
}
}
@@ -871,7 +871,7 @@
public void setTaskbarWindowFullscreen(boolean fullscreen) {
setAutohideSuspendFlag(FLAG_AUTOHIDE_SUSPEND_FULLSCREEN, fullscreen);
mIsFullscreen = fullscreen;
- setTaskbarWindowHeight(fullscreen ? MATCH_PARENT : mLastRequestedNonFullscreenHeight);
+ setTaskbarWindowSize(fullscreen ? MATCH_PARENT : mLastRequestedNonFullscreenSize);
}
/**
@@ -896,16 +896,20 @@
}
/**
- * Updates the TaskbarContainer height (pass {@link #getDefaultTaskbarWindowHeight()} to reset).
+ * Updates the TaskbarContainer size (pass {@link #getDefaultTaskbarWindowSize()} to reset).
*/
- public void setTaskbarWindowHeight(int height) {
- if (mWindowLayoutParams.height == height || mIsDestroyed) {
+ public void setTaskbarWindowSize(int size) {
+ // In landscape phone button nav mode, we should set the task bar width instead of height
+ // because this is the only case in which the nav bar is not on the display bottom.
+ boolean landscapePhoneButtonNav = isPhoneButtonNavMode() && mDeviceProfile.isLandscape;
+ if ((landscapePhoneButtonNav ? mWindowLayoutParams.width : mWindowLayoutParams.height)
+ == size || mIsDestroyed) {
return;
}
- if (height == MATCH_PARENT) {
- height = mDeviceProfile.heightPx;
+ if (size == MATCH_PARENT) {
+ size = mDeviceProfile.heightPx;
} else {
- mLastRequestedNonFullscreenHeight = height;
+ mLastRequestedNonFullscreenSize = size;
if (mIsFullscreen) {
// We still need to be fullscreen, so defer any change to our height until we call
// setTaskbarWindowFullscreen(false). For example, this could happen when dragging
@@ -914,15 +918,20 @@
return;
}
}
- mWindowLayoutParams.height = height;
+ if (landscapePhoneButtonNav) {
+ mWindowLayoutParams.width = size;
+ } else {
+ mWindowLayoutParams.height = size;
+ }
mControllers.taskbarInsetsController.onTaskbarOrBubblebarWindowHeightOrInsetsChanged();
notifyUpdateLayoutParams();
}
/**
- * Returns the default height of the window, including the static corner radii above taskbar.
+ * Returns the default size (in most cases height, but in 3-button phone mode, width) of the
+ * window, including the static corner radii above taskbar.
*/
- public int getDefaultTaskbarWindowHeight() {
+ public int getDefaultTaskbarWindowSize() {
Resources resources = getResources();
if (ENABLE_TASKBAR_NAVBAR_UNIFICATION && mDeviceProfile.isPhone) {
@@ -932,7 +941,7 @@
}
if (!isUserSetupComplete()) {
- return getSetupWindowHeight();
+ return getSetupWindowSize();
}
boolean shouldTreatAsTransient = DisplayController.isTransientTaskbar(this)
@@ -963,7 +972,7 @@
+ extraHeightForTaskbarTooltips;
}
- public int getSetupWindowHeight() {
+ public int getSetupWindowSize() {
return getResources().getDimensionPixelSize(R.dimen.taskbar_suw_frame);
}
diff --git a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java
index b762781..614dc14 100644
--- a/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java
+++ b/quickstep/src/com/android/launcher3/taskbar/TaskbarViewController.java
@@ -684,9 +684,9 @@
setter.addFloat(mThemedIconsBackgroundProgress, VALUE, 1f, 0f, LINEAR);
}
- int collapsedHeight = mActivity.getDefaultTaskbarWindowHeight();
+ int collapsedHeight = mActivity.getDefaultTaskbarWindowSize();
int expandedHeight = Math.max(collapsedHeight, taskbarDp.taskbarHeight + offsetY);
- setter.addOnFrameListener(anim -> mActivity.setTaskbarWindowHeight(
+ setter.addOnFrameListener(anim -> mActivity.setTaskbarWindowSize(
anim.getAnimatedFraction() > 0 ? expandedHeight : collapsedHeight));
mTaskbarBottomMargin = isTransientTaskbar
@@ -822,8 +822,16 @@
// We only translate on rotation when icon is aligned with hotseat
return;
}
- mActivity.setTaskbarWindowHeight(
- deviceProfile.taskbarHeight + deviceProfile.getTaskbarOffsetY());
+ int taskbarWindowSize;
+ if (mActivity.isPhoneMode()) {
+ taskbarWindowSize = mActivity.getResources().getDimensionPixelSize(
+ mActivity.isThreeButtonNav()
+ ? R.dimen.taskbar_phone_size
+ : R.dimen.taskbar_stashed_size);
+ } else {
+ taskbarWindowSize = deviceProfile.taskbarHeight + deviceProfile.getTaskbarOffsetY();
+ }
+ mActivity.setTaskbarWindowSize(taskbarWindowSize);
mTaskbarNavButtonTranslationY.updateValue(-deviceProfile.getTaskbarOffsetY());
}