Merge "Remove odd screen ids when isTwoPanels is true" into udc-qpr-dev

This commit is contained in:
Sebastián Franco
2023-08-22 20:02:29 +00:00
committed by Android (Google) Code Review
4 changed files with 41 additions and 9 deletions

View File

@@ -2343,13 +2343,37 @@ public class Launcher extends StatefulActivity<LauncherState>
mWorkspace.unlockWallpaperFromDefaultPageOnNextLayout();
}
/**
* Remove odd number because they are already included when isTwoPanels and add the pair screen
* if not present.
*/
private IntArray filterTwoPanelScreenIds(IntArray orderedScreenIds) {
IntSet screenIds = IntSet.wrap(orderedScreenIds);
orderedScreenIds.forEach(screenId -> {
if (screenId % 2 == 1) {
screenIds.remove(screenId);
// In case the pair is not added, add it
if (!mWorkspace.containsScreenId(screenId - 1)) {
screenIds.add(screenId - 1);
}
}
});
return screenIds.getArray();
}
private void bindAddScreens(IntArray orderedScreenIds) {
if (mDeviceProfile.isTwoPanels) {
// Some empty pages might have been removed while the phone was in a single panel
// mode, so we want to add those empty pages back.
IntSet screenIds = IntSet.wrap(orderedScreenIds);
orderedScreenIds.forEach(screenId -> screenIds.add(mWorkspace.getScreenPair(screenId)));
orderedScreenIds = screenIds.getArray();
if (FOLDABLE_SINGLE_PAGE.get()) {
orderedScreenIds = filterTwoPanelScreenIds(orderedScreenIds);
} else {
// Some empty pages might have been removed while the phone was in a single panel
// mode, so we want to add those empty pages back.
IntSet screenIds = IntSet.wrap(orderedScreenIds);
orderedScreenIds.forEach(
screenId -> screenIds.add(mWorkspace.getScreenPair(screenId)));
orderedScreenIds = screenIds.getArray();
}
}
int count = orderedScreenIds.size();

View File

@@ -731,6 +731,14 @@ public class Workspace<T extends View & PageIndicator> extends PagedView<T>
});
}
/**
* Returns if the given screenId is already in the Workspace
*/
public boolean containsScreenId(int screenId) {
return this.mWorkspaceScreens.containsKey(screenId);
}
/**
* Inserts extra empty pages to the end of the existing workspaces.
* Usually we add one extra empty screen, but when two panel home is enabled we add

View File

@@ -63,8 +63,8 @@ public class CellLayoutTestCaseReader {
}
public static class Board extends TestSection {
Point gridSize;
String board;
public Point gridSize;
public String board;
public Board(Point gridSize, String board) {
super(State.BOARD);
@@ -127,7 +127,7 @@ public class CellLayoutTestCaseReader {
}
}
List<TestSection> parse() {
public List<TestSection> parse() {
List<TestSection> sections = new ArrayList<>();
String[] lines = mTest.split("\n");
Iterator<String> it = Arrays.stream(lines).iterator();

View File

@@ -42,7 +42,7 @@ public class CellLayoutTestUtils {
params.getCellX(), params.getCellY(),
launcher.getWorkspace().getIdForScreen(cellLayout), CONTAINER_DESKTOP);
int screenId = pos.screenId;
if (screenId > boards.size() - 1) {
for (int j = boards.size(); j <= screenId; j++) {
boards.add(new CellLayoutBoard(cellLayout.getCountX(), cellLayout.getCountY()));
}
CellLayoutBoard board = boards.get(screenId);