mirror of
https://github.com/LawnchairLauncher/lawnchair.git
synced 2026-02-28 15:56:49 +00:00
Refactor device padding to be set per grid option
- Fixes bug where devices with scaled grids were not
getting the correct deivce padding.
- Also fix bug where device padding was invalid.
Added validation check when processing paddings to prevent
this from happening again.
Bug: 175329686
Test: manual, enable debug flag,
run and verify no crash from validation check
Change-Id: I35b019c40667c08de4fad95ac4b05b2d8f8a0e74
This commit is contained in:
@@ -104,6 +104,7 @@ public class DeviceProfile {
|
||||
private final int mWorkspacePageIndicatorOverlapWorkspace;
|
||||
|
||||
// Workspace icons
|
||||
public float iconScale;
|
||||
public int iconSizePx;
|
||||
public int iconTextSizePx;
|
||||
public int iconDrawablePaddingPx;
|
||||
@@ -312,12 +313,19 @@ public class DeviceProfile {
|
||||
// Calculate all of the remaining variables.
|
||||
extraSpace = updateAvailableDimensions(res);
|
||||
// Now that we have all of the variables calculated, we can tune certain sizes.
|
||||
if (isScalableGrid) {
|
||||
DevicePadding padding = inv.devicePaddings.getDevicePadding(extraSpace);
|
||||
workspaceTopPadding = padding.getWorkspaceTopPadding(extraSpace);
|
||||
workspaceBottomPadding = padding.getWorkspaceBottomPadding(extraSpace);
|
||||
if (isScalableGrid && inv.devicePaddings != null) {
|
||||
// Paddings were created assuming no scaling, so we first unscale the extra space.
|
||||
int unscaledExtraSpace = (int) (extraSpace / iconScale);
|
||||
DevicePadding padding = inv.devicePaddings.getDevicePadding(unscaledExtraSpace);
|
||||
|
||||
int paddingWorkspaceTop = padding.getWorkspaceTopPadding(unscaledExtraSpace);
|
||||
int paddingWorkspaceBottom = padding.getWorkspaceBottomPadding(unscaledExtraSpace);
|
||||
int paddingHotseatBottom = padding.getHotseatBottomPadding(unscaledExtraSpace);
|
||||
|
||||
workspaceTopPadding = Math.round(paddingWorkspaceTop * iconScale);
|
||||
workspaceBottomPadding = Math.round(paddingWorkspaceBottom * iconScale);
|
||||
extraHotseatBottomPadding = Math.round(paddingHotseatBottom * iconScale);
|
||||
|
||||
extraHotseatBottomPadding = padding.getHotseatBottomPadding(extraSpace);
|
||||
hotseatBarSizePx += extraHotseatBottomPadding;
|
||||
hotseatBarBottomPaddingPx += extraHotseatBottomPadding;
|
||||
} else if (!isVerticalBarLayout() && isPhone && isTallDevice) {
|
||||
@@ -490,6 +498,8 @@ public class DeviceProfile {
|
||||
* hotseat sizes, workspaceSpringLoadedShrinkFactor, folderIconSizePx, and folderIconOffsetYPx.
|
||||
*/
|
||||
public void updateIconSize(float scale, Resources res) {
|
||||
iconScale = scale;
|
||||
|
||||
// Workspace
|
||||
final boolean isVerticalLayout = isVerticalBarLayout();
|
||||
float invIconSizeDp = isVerticalLayout ? inv.landscapeIconSize : inv.iconSize;
|
||||
@@ -890,7 +900,14 @@ public class DeviceProfile {
|
||||
writer.println(prefix + pxToDpStr("workspacePadding.right", workspacePadding.right));
|
||||
writer.println(prefix + pxToDpStr("workspacePadding.bottom", workspacePadding.bottom));
|
||||
|
||||
writer.println(prefix + pxToDpStr("scaleToFit", iconScale));
|
||||
writer.println(prefix + pxToDpStr("extraSpace", extraSpace));
|
||||
|
||||
if (inv.devicePaddings != null) {
|
||||
int unscaledExtraSpace = (int) (extraSpace / iconScale);
|
||||
writer.println(prefix + pxToDpStr("maxEmptySpace",
|
||||
inv.devicePaddings.getDevicePadding(unscaledExtraSpace).getMaxEmptySpacePx()));
|
||||
}
|
||||
writer.println(prefix + pxToDpStr("workspaceTopPadding", workspaceTopPadding));
|
||||
writer.println(prefix + pxToDpStr("workspaceBottomPadding", workspaceBottomPadding));
|
||||
writer.println(prefix + pxToDpStr("extraHotseatBottomPadding", extraHotseatBottomPadding));
|
||||
|
||||
Reference in New Issue
Block a user