From 62f129b878598a2f4673a1cdbbae7225f6128fc9 Mon Sep 17 00:00:00 2001 From: Alex Chau Date: Fri, 3 Sep 2021 16:54:27 +0100 Subject: [PATCH] Fix getPagesToBindSynchronously returning wrong page pairs - Use WorkSpace.getPagePair instead for accurate value Bug: 191657065 Test: manual Change-Id: I584f1705fb5ed2f0d2bd776eb6cf4f60c69238ac --- src/com/android/launcher3/Launcher.java | 20 ++++++++++---------- src/com/android/launcher3/Workspace.java | 4 ---- 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/src/com/android/launcher3/Launcher.java b/src/com/android/launcher3/Launcher.java index 5be93b2f66..1354a7ab37 100644 --- a/src/com/android/launcher3/Launcher.java +++ b/src/com/android/launcher3/Launcher.java @@ -2112,19 +2112,19 @@ public class Launcher extends StatefulActivity implements Launche actualIds.add(id); } int firstId = visibleIds.getArray().get(0); + int pairId = mWorkspace.getPagePair(firstId); + // Double check that actual screenIds contains the visibleId, as empty screens are hidden + // in single panel. if (actualIds.contains(firstId)) { result.add(firstId); - - if (mDeviceProfile.isTwoPanels) { - int index = actualIds.indexOf(firstId); - int nextIndex = (index / 2) * 2; - if (nextIndex == index) { - nextIndex++; - } - if (nextIndex < actualIds.size()) { - result.add(actualIds.get(nextIndex)); - } + if (mDeviceProfile.isTwoPanels && actualIds.contains(pairId)) { + result.add(pairId); } + } else if (LauncherAppState.getIDP(this).supportedProfiles.stream().anyMatch( + deviceProfile -> deviceProfile.isTwoPanels) && actualIds.contains(pairId)) { + // Add the right panel if left panel is hidden when switching display, due to empty + // pages being hidden in single panel. + result.add(pairId); } return result; } diff --git a/src/com/android/launcher3/Workspace.java b/src/com/android/launcher3/Workspace.java index b1a9b76f6d..6ec48e5278 100644 --- a/src/com/android/launcher3/Workspace.java +++ b/src/com/android/launcher3/Workspace.java @@ -920,12 +920,8 @@ public class Workspace extends PagedView /** * Returns the page that is shown together with the given page when two panel is enabled. - * @throws IllegalStateException if called while two panel home isn't enabled. */ public int getPagePair(int page) { - if (!isTwoPanelEnabled()) { - throw new IllegalStateException("Two panel home isn't enabled."); - } if (page % 2 == 0) { return page + 1; } else {