Merge "Fix right split screen app going to wrong target" into sc-v2-dev

This commit is contained in:
Tony Wickham
2021-09-24 22:01:06 +00:00
committed by Android (Google) Code Review
3 changed files with 11 additions and 11 deletions

View File

@@ -108,7 +108,6 @@ import com.android.quickstep.util.StaggeredWorkspaceAnim;
import com.android.quickstep.util.SurfaceTransactionApplier;
import com.android.quickstep.util.SwipePipToHomeAnimator;
import com.android.quickstep.util.TaskViewSimulator;
import com.android.quickstep.util.TransformParams;
import com.android.quickstep.util.VibratorWrapper;
import com.android.quickstep.views.RecentsView;
import com.android.quickstep.views.TaskView;
@@ -1342,9 +1341,10 @@ public abstract class AbsSwipeUpHandler<T extends StatefulActivity<S>,
final int windowRotation = calculateWindowRotation(runningTaskTarget, orientationState);
final int homeRotation = orientationState.getRecentsActivityRotation();
final Matrix homeToWindowPositionMap = new Matrix();
final RectF startRect = updateProgressForStartRect(homeToWindowPositionMap,
final Matrix[] homeToWindowPositionMaps = new Matrix[mRemoteTargetHandles.length];
final RectF startRect = updateProgressForStartRect(homeToWindowPositionMaps,
startProgress)[0];
final Matrix homeToWindowPositionMap = homeToWindowPositionMaps[0];
// Move the startRect to Launcher space as floatingIconView runs in Launcher
final Matrix windowToHomePositionMap = new Matrix();
homeToWindowPositionMap.invert(windowToHomePositionMap);

View File

@@ -227,7 +227,7 @@ public abstract class SwipeUpAnimationLogic implements
* @param startProgress The progress of {@link #mCurrentShift} to start thw window from.
* @return {@link RectF} represents the bounds as starting point in window space.
*/
protected RectF[] updateProgressForStartRect(Matrix outMatrix, float startProgress) {
protected RectF[] updateProgressForStartRect(Matrix[] outMatrix, float startProgress) {
mCurrentShift.updateValue(startProgress);
RectF[] startRects = new RectF[mRemoteTargetHandles.length];
for (int i = 0, mRemoteTargetHandlesLength = mRemoteTargetHandles.length;
@@ -237,7 +237,8 @@ public abstract class SwipeUpAnimationLogic implements
tvs.apply(remoteHandle.getTransformParams().setProgress(startProgress));
startRects[i] = new RectF(tvs.getCurrentCropRect());
tvs.applyWindowToHomeRotation(outMatrix);
outMatrix[i] = new Matrix();
tvs.applyWindowToHomeRotation(outMatrix[i]);
tvs.getCurrentMatrix().mapRect(startRects[i]);
}
return startRects;
@@ -267,14 +268,14 @@ public abstract class SwipeUpAnimationLogic implements
// TODO(b/195473584) compute separate end targets for different staged split
final RectF targetRect = homeAnimationFactory.getWindowTargetRect();
RectFSpringAnim[] out = new RectFSpringAnim[mRemoteTargetHandles.length];
Matrix homeToWindowPositionMap = new Matrix();
Matrix[] homeToWindowPositionMap = new Matrix[mRemoteTargetHandles.length];
RectF[] startRects = updateProgressForStartRect(homeToWindowPositionMap, startProgress);
for (int i = 0, mRemoteTargetHandlesLength = mRemoteTargetHandles.length;
i < mRemoteTargetHandlesLength; i++) {
RemoteTargetHandle remoteHandle = mRemoteTargetHandles[i];
out[i] = getWindowAnimationToHomeInternal(homeAnimationFactory,
targetRect, remoteHandle.getTransformParams(),
remoteHandle.getTaskViewSimulator(), startRects[i], homeToWindowPositionMap);
remoteHandle.getTaskViewSimulator(), startRects[i], homeToWindowPositionMap[i]);
}
return out;
}

View File

@@ -256,12 +256,14 @@ public class TaskViewSimulator implements TransformParams.BuilderProxy {
* window coordinate space.
*/
public void applyWindowToHomeRotation(Matrix matrix) {
mMatrix.postTranslate(mDp.windowX, mDp.windowY);
matrix.postTranslate(mDp.windowX, mDp.windowY);
postDisplayRotation(deltaRotation(
mOrientationState.getRecentsActivityRotation(),
mOrientationState.getDisplayRotation()),
mDp.widthPx, mDp.heightPx, matrix);
matrix.postTranslate(-mRunningTargetWindowPosition.x, -mRunningTargetWindowPosition.y);
// Move lower/right split window into correct position
matrix.postTranslate(mSplitOffset.x, mSplitOffset.y);
}
/**
@@ -326,9 +328,6 @@ public class TaskViewSimulator implements TransformParams.BuilderProxy {
recentsViewPrimaryTranslation.value);
applyWindowToHomeRotation(mMatrix);
// Move lower/right split window into correct position
mMatrix.postTranslate(mSplitOffset.x, mSplitOffset.y);
// Crop rect is the inverse of thumbnail matrix
mTempRectF.set(-insets.left, -insets.top,
taskWidth + insets.right, taskHeight + insets.bottom);