Merge "Limit starting bounds of swipe to animation start rect" into tm-dev am: e8a4e0e2dc am: e9e0800fd7

Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Launcher3/+/18607508

Change-Id: I7b4afd0d4eae8853e15c06c8f7f6472ef5035bf0
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Vinit Nayak
2022-05-27 03:29:15 +00:00
committed by Automerger Merge Worker
4 changed files with 33 additions and 0 deletions

View File

@@ -266,6 +266,13 @@ public abstract class SwipeUpAnimationLogic implements
RectF cropRectF = new RectF(taskViewSimulator.getCurrentCropRect());
// Move the startRect to Launcher space as floatingIconView runs in Launcher
Matrix windowToHomePositionMap = new Matrix();
// If the start rect ends up overshooting too much to the left/right offscreen, bring it
// back to fullscreen. This can happen when the recentsScroll value isn't aligned with
// the pageScroll value for a given taskView, see b/228829958#comment12
mRemoteTargetHandles[0].getTaskViewSimulator().getOrientationState().getOrientationHandler()
.fixBoundsForHomeAnimStartRect(startRect, mDp);
homeToWindowPositionMap.invert(windowToHomePositionMap);
windowToHomePositionMap.mapRect(startRect);

View File

@@ -103,6 +103,17 @@ public class LandscapePagedViewHandler implements PagedOrientationHandler {
velocity.set(-oldY, oldX);
}
@Override
public void fixBoundsForHomeAnimStartRect(RectF outStartRect, DeviceProfile deviceProfile) {
// We don't need to check the "top" value here because the startRect is in the orientation
// of the app, not of the fixed portrait launcher.
if (outStartRect.left > deviceProfile.heightPx) {
outStartRect.offsetTo(0, outStartRect.top);
} else if (outStartRect.left < -deviceProfile.heightPx) {
outStartRect.offsetTo(0, outStartRect.top);
}
}
@Override
public <T> void setPrimary(T target, Int2DAction<T> action, int param) {
action.call(target, 0, param);

View File

@@ -236,6 +236,12 @@ public interface PagedOrientationHandler {
*/
void adjustFloatingIconStartVelocity(PointF velocity);
/**
* Ensures that outStartRect left bound is within the DeviceProfile's visual boundaries
* @param outStartRect The start rect that will directly be modified
*/
void fixBoundsForHomeAnimStartRect(RectF outStartRect, DeviceProfile deviceProfile);
class ChildBounds {
public final int primaryDimension;

View File

@@ -104,6 +104,15 @@ public class PortraitPagedViewHandler implements PagedOrientationHandler {
//no-op
}
@Override
public void fixBoundsForHomeAnimStartRect(RectF outStartRect, DeviceProfile deviceProfile) {
if (outStartRect.left > deviceProfile.widthPx) {
outStartRect.offsetTo(0, outStartRect.top);
} else if (outStartRect.left < -deviceProfile.widthPx) {
outStartRect.offsetTo(0, outStartRect.top);
}
}
@Override
public <T> void setPrimary(T target, Int2DAction<T> action, int param) {
action.call(target, param, 0);