Fix RecentsView scroll linking

- Reverts change from ag/11900651 that deferred setting
  mRecentsViewScrollLinked = true
- Instead, setCurrentPage(mCurrentPage) after updating layout rotation
  to ensure we recompute page scrolls before using them

Test:
- Auto rotate on, home rotation off, open Calculator in landscape,
  swipe up slowly and ensure it never turns invisible
- Quick switch from Calculator to Clock, start swiping directly up
  immediately after settling on Clock, ensure Calculator window
  remains at its scroll position to the side (b/159461591)

Fixes: 159461591
Change-Id: Iab92963cc6c33df42b77f5ccfa3932382e8f869a
This commit is contained in:
Tony Wickham 2020-06-19 17:42:18 -05:00
parent 9627bc466a
commit 94d1b4be17
2 changed files with 3 additions and 4 deletions

View File

@ -121,10 +121,6 @@ public abstract class BaseSwipeUpHandler<T extends StatefulActivity<?>, Q extend
});
mRecentsView.setOnScrollChangeListener((v, scrollX, scrollY, oldScrollX, oldScrollY) -> {
// Wait until the first scroll event before applying scroll to taskViewSimulator.
// Since, by default the current/running task already centered, this ensures that we
// do not move the running task, in case RecentsView has not yet laid out completely.
mRecentsViewScrollLinked = true;
if (moveWindowWithRecentsScroll()) {
updateFinalShift();
}
@ -132,6 +128,7 @@ public abstract class BaseSwipeUpHandler<T extends StatefulActivity<?>, Q extend
runOnRecentsAnimationStart(() ->
mRecentsView.setRecentsAnimationTargets(mRecentsAnimationController,
mRecentsAnimationTargets));
mRecentsViewScrollLinked = true;
}
protected void startNewTask(Consumer<Boolean> resultCallback) {

View File

@ -1656,6 +1656,8 @@ public abstract class RecentsView<T extends BaseActivity> extends PagedView impl
!mOrientationState.canLauncherRotate() && isInLandscape);
resetPaddingFromTaskSize();
requestLayout();
// Reapply the current page to update page scrolls.
setCurrentPage(mCurrentPage);
}
}