From 493540439982f633689093bfa50acd92da7b739a Mon Sep 17 00:00:00 2001 From: Alex Chau Date: Wed, 25 Aug 2021 13:21:58 +0100 Subject: [PATCH] Return mSynchronouslyBoundPages as getPagesToBindSynchronously between onInitialBindCompleteand finishBindingItems - Otherwise it'll return wrong currentPage value, as currentPage aren't updated until finishBindingItems - There is still problem that wallpaper jumps to page 0 and then to the desired page: https://drive.google.com/file/d/132Sq5oRZKRclhdh1Ls1RaHNEVXJQcrxC/view?usp=sharing&resourcekey=0-l2N9NWtZ8FqfaVT0bVGVqw Bug: 191657065 Test: manual Change-Id: I7ec167b617a8f59865e959d9dd677256b1ab4ef9 --- src/com/android/launcher3/Launcher.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 4d5cc5ee4a..7fa8d16942 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -2094,8 +2094,16 @@ public class Launcher extends StatefulActivity implements Launche @Override public IntSet getPagesToBindSynchronously(IntArray orderedScreenIds) { - IntSet visibleIds = mPagesToBindSynchronously.isEmpty() - ? mWorkspace.getCurrentPageScreenIds() : mPagesToBindSynchronously; + IntSet visibleIds; + if (!mPagesToBindSynchronously.isEmpty()) { + visibleIds = mPagesToBindSynchronously; + } else if (!mWorkspaceLoading) { + visibleIds = mWorkspace.getCurrentPageScreenIds(); + } else { + // If workspace binding is still in progress, getCurrentPageScreenIds won't be accurate, + // and we should use mSynchronouslyBoundPages that's set during initial binding. + visibleIds = mSynchronouslyBoundPages; + } IntArray actualIds = new IntArray(); IntSet result = new IntSet();