From 7a78147ba3852613485f190e2a97230535869248 Mon Sep 17 00:00:00 2001 From: Vinit Nayak Date: Fri, 12 May 2023 10:40:59 -0700 Subject: [PATCH] Use same calculation for portrait as fake landscape for layout of split thumbnails * Partially revert ag/20330754, not entirely sure why we switched from using dp.isLanscape to splitInfo.appsStackedVertically, since the two represent different states (specifically for fake landscape) Fixes: 280783620 Flag: None Test: Tested on foldable, small + large screen. Fake and real landscape on small screen. Rotated while in overview. Slight sliver of wallpaper shows on large screen, but that issue has been there. Change-Id: I13d834a31417751dd3b757344ec7b4d9a174090e --- .../touch/PortraitPagedViewHandler.java | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/com/android/launcher3/touch/PortraitPagedViewHandler.java b/src/com/android/launcher3/touch/PortraitPagedViewHandler.java index 050e88f5bc..6a972eb0dd 100644 --- a/src/com/android/launcher3/touch/PortraitPagedViewHandler.java +++ b/src/com/android/launcher3/touch/PortraitPagedViewHandler.java @@ -589,17 +589,17 @@ public class PortraitPagedViewHandler implements PagedOrientationHandler { float scaledDividerHeight = dividerHeight * scale; if (desiredStagePosition == SplitConfigurationOptions.STAGE_POSITION_TOP_OR_LEFT) { - if (splitInfo.appsStackedVertically) { - outRect.bottom = Math.round(outRect.top + scaledTopTaskHeight); - } else { + if (dp.isLandscape) { outRect.right = outRect.left + Math.round(outRect.width() * topLeftTaskPercent); + } else { + outRect.bottom = Math.round(outRect.top + scaledTopTaskHeight); } } else { - if (splitInfo.appsStackedVertically) { - outRect.top += Math.round(scaledTopTaskHeight + scaledDividerHeight); - } else { + if (dp.isLandscape) { outRect.left += Math.round(outRect.width() * (topLeftTaskPercent + dividerBarPercent)); + } else { + outRect.top += Math.round(scaledTopTaskHeight + scaledDividerHeight); } } } @@ -610,9 +610,9 @@ public class PortraitPagedViewHandler implements PagedOrientationHandler { DeviceProfile dp, boolean isRtl) { int spaceAboveSnapshot = dp.overviewTaskThumbnailTopMarginPx; int totalThumbnailHeight = parentHeight - spaceAboveSnapshot; - int dividerBar = Math.round(splitBoundsConfig.appsStackedVertically - ? splitBoundsConfig.dividerHeightPercent * dp.availableHeightPx - : splitBoundsConfig.dividerWidthPercent * parentWidth); + float dividerScale = splitBoundsConfig.appsStackedVertically + ? splitBoundsConfig.dividerHeightPercent + : splitBoundsConfig.dividerWidthPercent; int primarySnapshotHeight; int primarySnapshotWidth; int secondarySnapshotHeight; @@ -620,12 +620,13 @@ public class PortraitPagedViewHandler implements PagedOrientationHandler { float taskPercent = splitBoundsConfig.appsStackedVertically ? splitBoundsConfig.topTaskPercent : splitBoundsConfig.leftTaskPercent; if (dp.isLandscape) { + int scaledDividerBar = Math.round(parentWidth * dividerScale); primarySnapshotHeight = totalThumbnailHeight; primarySnapshotWidth = Math.round(parentWidth * taskPercent); secondarySnapshotHeight = totalThumbnailHeight; - secondarySnapshotWidth = parentWidth - primarySnapshotWidth - dividerBar; - int translationX = primarySnapshotWidth + dividerBar; + secondarySnapshotWidth = parentWidth - primarySnapshotWidth - scaledDividerBar; + int translationX = primarySnapshotWidth + scaledDividerBar; if (isRtl) { primarySnapshot.setTranslationX(-translationX); secondarySnapshot.setTranslationX(0); @@ -640,7 +641,7 @@ public class PortraitPagedViewHandler implements PagedOrientationHandler { } else { float scale = (float) totalThumbnailHeight / dp.availableHeightPx; float topTaskHeight = dp.availableHeightPx * taskPercent; - float finalDividerHeight = dividerBar * scale; + float finalDividerHeight = Math.round(totalThumbnailHeight * dividerScale); float scaledTopTaskHeight = topTaskHeight * scale; primarySnapshotWidth = parentWidth; primarySnapshotHeight = Math.round(scaledTopTaskHeight);