Merge "Skip enter split expanding animation by drag" into tm-qpr-dev am: 7914d7de84 am: 543949014b

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/19997710

Change-Id: Id95a0025b7ebb3960603f068a28daed18c8ab932
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Tony Huang
2022-09-22 07:18:48 +00:00
committed by Automerger Merge Worker
2 changed files with 27 additions and 8 deletions

View File

@@ -87,6 +87,10 @@ public class SplitscreenEventLogger {
return mLoggerSessionId != null;
}
public boolean isEnterRequestedByDrag() {
return mEnterReason == ENTER_REASON_DRAG;
}
/**
* May be called before logEnter() to indicate that the session was started from a drag.
*/

View File

@@ -505,6 +505,12 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
final WindowContainerTransaction wct = new WindowContainerTransaction();
options = resolveStartStage(STAGE_TYPE_UNDEFINED, position, options, wct);
// If split still not active, apply windows bounds first to avoid surface reset to
// wrong pos by SurfaceAnimator from wms.
if (!mMainStage.isActive() && mLogger.isEnterRequestedByDrag()) {
updateWindowBounds(mSplitLayout, wct);
}
wct.sendPendingIntent(intent, fillInIntent, options);
mSyncQueue.queue(transition, WindowManager.TRANSIT_OPEN, wct);
}
@@ -1461,18 +1467,27 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
}
}
} else if (isSideStage && hasChildren && !mMainStage.isActive()) {
// TODO (b/238697912) : Add the validation to prevent entering non-recovered status
onSplitScreenEnter();
final WindowContainerTransaction wct = new WindowContainerTransaction();
mSplitLayout.init();
mSplitLayout.setDividerAtBorder(mSideStagePosition == SPLIT_POSITION_TOP_OR_LEFT);
mMainStage.activate(wct, true /* includingTopTask */);
updateWindowBounds(mSplitLayout, wct);
wct.reorder(mRootTaskInfo.token, true);
wct.setForceTranslucent(mRootTaskInfo.token, false);
if (mLogger.isEnterRequestedByDrag()) {
prepareEnterSplitScreen(wct);
} else {
// TODO (b/238697912) : Add the validation to prevent entering non-recovered status
onSplitScreenEnter();
mSplitLayout.setDividerAtBorder(mSideStagePosition == SPLIT_POSITION_TOP_OR_LEFT);
mMainStage.activate(wct, true /* includingTopTask */);
updateWindowBounds(mSplitLayout, wct);
wct.reorder(mRootTaskInfo.token, true);
wct.setForceTranslucent(mRootTaskInfo.token, false);
}
mSyncQueue.queue(wct);
mSyncQueue.runInSync(t -> {
mSplitLayout.flingDividerToCenter();
if (mLogger.isEnterRequestedByDrag()) {
updateSurfaceBounds(mSplitLayout, t, false /* applyResizingOffset */);
} else {
mSplitLayout.flingDividerToCenter();
}
});
}
if (mMainStageListener.mHasChildren && mSideStageListener.mHasChildren) {