Loading quickstep/res/values/dimens.xml +5 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,11 @@ <dimen name="overview_actions_bottom_margin_three_button">8dp</dimen> <dimen name="overview_actions_horizontal_margin">16dp</dimen> <dimen name="recents_row_spacing">48dp</dimen> <dimen name="overview_grid_top_margin">77dp</dimen> <dimen name="overview_grid_bottom_margin">90dp</dimen> <dimen name="overview_grid_side_margin">54dp</dimen> <dimen name="overview_grid_row_spacing">42dp</dimen> <dimen name="recents_page_spacing">16dp</dimen> <dimen name="recents_clear_all_deadzone_vertical_margin">70dp</dimen> Loading quickstep/src/com/android/quickstep/BaseActivityInterface.java +15 −0 Original line number Diff line number Diff line Loading @@ -257,6 +257,21 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T Math.round(x) + Math.round(outWidth), Math.round(y) + Math.round(outHeight)); } /** * Calculates the overview grid size for the provided device configuration. */ public final void calculateGridSize(Context context, DeviceProfile dp, Rect outRect) { Resources res = context.getResources(); int topMargin = res.getDimensionPixelSize(R.dimen.overview_grid_top_margin); int bottomMargin = res.getDimensionPixelSize(R.dimen.overview_grid_bottom_margin); int sideMargin = res.getDimensionPixelSize(R.dimen.overview_grid_side_margin); Rect insets = dp.getInsets(); outRect.set(0, 0, dp.widthPx, dp.heightPx); outRect.inset(Math.max(insets.left, sideMargin), Math.max(insets.top, topMargin), Math.max(insets.right, sideMargin), Math.max(insets.bottom, bottomMargin)); } /** * Calculates the modal taskView size for the provided device configuration */ Loading quickstep/src/com/android/quickstep/util/TaskViewSimulator.java +22 −10 Original line number Diff line number Diff line Loading @@ -79,6 +79,7 @@ public class TaskViewSimulator implements TransformParams.BuilderProxy { private final boolean mIsRecentsRtl; private final Rect mTaskRect = new Rect(); private final Rect mGridRect = new Rect(); private boolean mDrawsBelowRecents; private final PointF mPivot = new PointF(); private DeviceProfile mDp; Loading Loading @@ -124,7 +125,7 @@ public class TaskViewSimulator implements TransformParams.BuilderProxy { Resources resources = context.getResources(); mIsRecentsRtl = mOrientationState.getOrientationHandler().getRecentsRtlSetting(resources); mTaskThumbnailPadding = (int) resources.getDimension(R.dimen.task_thumbnail_top_margin); mRowSpacing = (int) resources.getDimension(R.dimen.recents_row_spacing); mRowSpacing = (int) resources.getDimension(R.dimen.overview_grid_row_spacing); } /** Loading Loading @@ -266,6 +267,7 @@ public class TaskViewSimulator implements TransformParams.BuilderProxy { mOrientationStateId = mOrientationState.getStateId(); getFullScreenScale(); mSizeStrategy.calculateGridSize(mContext, mDp, mGridRect); mThumbnailData.rotation = mOrientationState.getDisplayRotation(); mPositionHelper.updateThumbnailMatrix( Loading Loading @@ -304,24 +306,34 @@ public class TaskViewSimulator implements TransformParams.BuilderProxy { mMatrix.postTranslate(insets.left, insets.top); mMatrix.postScale(scale, scale); // Apply TaskView matrix: gridProgress related properties float interpolatedGridProgress = ACCEL_DEACCEL.getInterpolation(gridProgress.value); // Apply TaskView matrix: gridProgress final int boxLength = (int) Math.max(taskWidth, taskHeight); float availableHeight = mTaskThumbnailPadding + taskHeight + mSizeStrategy.getOverviewActionsHeight( mContext); float availableHeight = mGridRect.height(); float rowHeight = (availableHeight - mRowSpacing) / 2; float gridScale = rowHeight / (boxLength + mTaskThumbnailPadding); scale = Utilities.mapRange(interpolatedGridProgress, 1f, gridScale); mMatrix.postScale(scale, scale, mIsRecentsRtl ? 0 : taskWidth, 0); float taskWidthDiff = taskWidth * (1 - gridScale); float taskWidthOffset = mIsRecentsRtl ? taskWidthDiff : -taskWidthDiff; mOrientationState.getOrientationHandler().set(mMatrix, MATRIX_POST_TRANSLATE, Utilities.mapRange(interpolatedGridProgress, 0, taskWidthOffset)); mOrientationState.getOrientationHandler().setSecondary(mMatrix, MATRIX_POST_TRANSLATE, Utilities.mapRange(interpolatedGridProgress, 0, gridTranslationSecondary.value)); // Apply TaskView matrix: task rect and grid rect difference float scaledWidth = taskWidth * gridScale; float taskGridHorizontalDiff; if (mIsRecentsRtl) { float taskRight = mTaskRect.left + scaledWidth; taskGridHorizontalDiff = mGridRect.right - taskRight; } else { float taskLeft = mTaskRect.right - scaledWidth; taskGridHorizontalDiff = mGridRect.left - taskLeft; } float taskGridVerticalDiff = mGridRect.top + mTaskThumbnailPadding * gridScale - mTaskRect.top; mOrientationState.getOrientationHandler().set(mMatrix, MATRIX_POST_TRANSLATE, Utilities.mapRange(interpolatedGridProgress, 0, taskGridHorizontalDiff)); mOrientationState.getOrientationHandler().setSecondary(mMatrix, MATRIX_POST_TRANSLATE, Utilities.mapRange(interpolatedGridProgress, 0, taskGridVerticalDiff)); // Apply TaskView matrix: translate, scroll mMatrix.postTranslate(mTaskRect.left, mTaskRect.top); mOrientationState.getOrientationHandler().set(mMatrix, MATRIX_POST_TRANSLATE, Loading quickstep/src/com/android/quickstep/views/RecentsView.java +31 −28 Original line number Diff line number Diff line Loading @@ -264,6 +264,7 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView protected final TransformParams mLiveTileParams = new TransformParams(); protected final TaskViewSimulator mLiveTileTaskViewSimulator; protected final Rect mLastComputedTaskSize = new Rect(); protected final Rect mLastComputedGridSize = new Rect(); // How much a task that is directly offscreen will be pushed out due to RecentsView scale/pivot. protected Float mLastComputedTaskPushOutDistance = null; protected boolean mEnableDrawingLiveTile = false; Loading Loading @@ -471,7 +472,7 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView setLayoutDirection(mIsRtl ? View.LAYOUT_DIRECTION_RTL : View.LAYOUT_DIRECTION_LTR); mTaskTopMargin = getResources() .getDimensionPixelSize(R.dimen.task_thumbnail_top_margin); mRowSpacing = (int) getResources().getDimension(R.dimen.recents_row_spacing); mRowSpacing = getResources().getDimensionPixelSize(R.dimen.overview_grid_row_spacing); mSquaredTouchSlop = squaredTouchSlop(context); mEmptyIcon = context.getDrawable(R.drawable.ic_empty_recents); Loading Loading @@ -1012,6 +1013,10 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView setPadding(mTempRect.left - mInsets.left, mTempRect.top - mInsets.top, dp.widthPx - mInsets.right - mTempRect.right, dp.heightPx - mInsets.bottom - mTempRect.bottom); mSizeStrategy.calculateGridSize(mActivity, mActivity.getDeviceProfile(), mLastComputedGridSize); // Force TaskView to update size from thumbnail updateTaskSize(); } Loading Loading @@ -1521,22 +1526,10 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView } final int boxLength = Math.max(mTaskWidth, mTaskHeight); float availableHeight = mTaskTopMargin + mTaskHeight + mSizeStrategy.getOverviewActionsHeight(mContext); float availableHeight = mLastComputedGridSize.height(); float rowHeight = (availableHeight - mRowSpacing) / 2; float gridScale = rowHeight / (boxLength + mTaskTopMargin); TaskView firstTask = getTaskViewAt(0); float firstTaskWidthOffset; if (mIsRtl) { // Move the first task to the right edge. firstTaskWidthOffset = mTaskWidth - firstTask.getLayoutParams().width * gridScale; } else { // Move the first task to the left edge. firstTaskWidthOffset = -firstTask.getLayoutParams().width * (1 - gridScale); } int topRowWidth = 0; int bottomRowWidth = 0; float topAccumulatedTranslationX = 0; Loading @@ -1546,13 +1539,22 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView for (int i = 0; i < taskCount; i++) { TaskView taskView = getTaskViewAt(i); taskView.setGridScale(gridScale); gridTranslations[i] = 0; float taskWidthDiff = mTaskWidth - taskView.getLayoutParams().width * gridScale; float taskWidthOffset = mIsRtl ? taskWidthDiff : -taskWidthDiff; // Visually we want to move all task by firstTaskWidthOffset, but calculate page scroll // according to right edge (or left in nonRtl) of TaskView. gridTranslations[i] = firstTaskWidthOffset - taskWidthOffset; taskView.setGridOffsetTranslationX(taskWidthOffset); float scaledWidth = taskView.getLayoutParams().width * gridScale; float taskGridHorizontalDiff; if (mIsRtl) { float taskRight = mLastComputedTaskSize.left + scaledWidth; taskGridHorizontalDiff = mLastComputedGridSize.right - taskRight; } else { float taskLeft = mLastComputedTaskSize.right - scaledWidth; taskGridHorizontalDiff = mLastComputedGridSize.left - taskLeft; } gridTranslations[i] -= taskGridHorizontalDiff; taskView.setGridOffsetTranslationX(taskGridHorizontalDiff); float taskGridVerticalDiff = mLastComputedGridSize.top + mTaskTopMargin * gridScale - mLastComputedTaskSize.top; // Off-set gap due to task scaling. float widthDiff = taskView.getLayoutParams().width * (1 - gridScale); Loading @@ -1567,7 +1569,7 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView topRowWidth += taskView.getLayoutParams().width * gridScale + mPageSpacing; topSet.add(i); taskView.setGridTranslationY(0); taskView.setGridTranslationY(taskGridVerticalDiff); // Move horizontally into empty space. float widthOffset = 0; Loading @@ -1578,15 +1580,14 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView float gridTranslationX = mIsRtl ? widthOffset : -widthOffset; gridTranslations[i] += gridTranslationX; topAccumulatedTranslationX += gridTranslationX + gridScaleTranslationX; bottomAccumulatedTranslationX += gridScaleTranslationX; topAccumulatedTranslationX += gridTranslationX; } else { gridTranslations[i] += bottomAccumulatedTranslationX; bottomRowWidth += taskView.getLayoutParams().width * gridScale + mPageSpacing; // Move into bottom row. float heightOffset = (boxLength + mTaskTopMargin) * gridScale + mRowSpacing; taskView.setGridTranslationY(heightOffset); taskView.setGridTranslationY(heightOffset + taskGridVerticalDiff); // Move horizontally into empty space. float widthOffset = 0; Loading @@ -1597,9 +1598,10 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView float gridTranslationX = mIsRtl ? widthOffset : -widthOffset; gridTranslations[i] += gridTranslationX; topAccumulatedTranslationX += gridScaleTranslationX; bottomAccumulatedTranslationX += gridTranslationX + gridScaleTranslationX; bottomAccumulatedTranslationX += gridTranslationX; } topAccumulatedTranslationX += gridScaleTranslationX; bottomAccumulatedTranslationX += gridScaleTranslationX; } // Use the accumulated translation of the longer row. Loading Loading @@ -1632,8 +1634,9 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView mIsRtl ? -shortTotalCompensation : shortTotalCompensation; } float clearAllTotalTranslationX = firstTaskWidthOffset + clearAllAccumulatedTranslation + clearAllShorterRowCompensation + clearAllShortTotalCompensation; float clearAllTotalTranslationX = clearAllAccumulatedTranslation + clearAllShorterRowCompensation + clearAllShortTotalCompensation; // We need to maintain first task's grid translation at 0, now shift translation of all // the TaskViews to achieve that. Loading Loading
quickstep/res/values/dimens.xml +5 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,11 @@ <dimen name="overview_actions_bottom_margin_three_button">8dp</dimen> <dimen name="overview_actions_horizontal_margin">16dp</dimen> <dimen name="recents_row_spacing">48dp</dimen> <dimen name="overview_grid_top_margin">77dp</dimen> <dimen name="overview_grid_bottom_margin">90dp</dimen> <dimen name="overview_grid_side_margin">54dp</dimen> <dimen name="overview_grid_row_spacing">42dp</dimen> <dimen name="recents_page_spacing">16dp</dimen> <dimen name="recents_clear_all_deadzone_vertical_margin">70dp</dimen> Loading
quickstep/src/com/android/quickstep/BaseActivityInterface.java +15 −0 Original line number Diff line number Diff line Loading @@ -257,6 +257,21 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T Math.round(x) + Math.round(outWidth), Math.round(y) + Math.round(outHeight)); } /** * Calculates the overview grid size for the provided device configuration. */ public final void calculateGridSize(Context context, DeviceProfile dp, Rect outRect) { Resources res = context.getResources(); int topMargin = res.getDimensionPixelSize(R.dimen.overview_grid_top_margin); int bottomMargin = res.getDimensionPixelSize(R.dimen.overview_grid_bottom_margin); int sideMargin = res.getDimensionPixelSize(R.dimen.overview_grid_side_margin); Rect insets = dp.getInsets(); outRect.set(0, 0, dp.widthPx, dp.heightPx); outRect.inset(Math.max(insets.left, sideMargin), Math.max(insets.top, topMargin), Math.max(insets.right, sideMargin), Math.max(insets.bottom, bottomMargin)); } /** * Calculates the modal taskView size for the provided device configuration */ Loading
quickstep/src/com/android/quickstep/util/TaskViewSimulator.java +22 −10 Original line number Diff line number Diff line Loading @@ -79,6 +79,7 @@ public class TaskViewSimulator implements TransformParams.BuilderProxy { private final boolean mIsRecentsRtl; private final Rect mTaskRect = new Rect(); private final Rect mGridRect = new Rect(); private boolean mDrawsBelowRecents; private final PointF mPivot = new PointF(); private DeviceProfile mDp; Loading Loading @@ -124,7 +125,7 @@ public class TaskViewSimulator implements TransformParams.BuilderProxy { Resources resources = context.getResources(); mIsRecentsRtl = mOrientationState.getOrientationHandler().getRecentsRtlSetting(resources); mTaskThumbnailPadding = (int) resources.getDimension(R.dimen.task_thumbnail_top_margin); mRowSpacing = (int) resources.getDimension(R.dimen.recents_row_spacing); mRowSpacing = (int) resources.getDimension(R.dimen.overview_grid_row_spacing); } /** Loading Loading @@ -266,6 +267,7 @@ public class TaskViewSimulator implements TransformParams.BuilderProxy { mOrientationStateId = mOrientationState.getStateId(); getFullScreenScale(); mSizeStrategy.calculateGridSize(mContext, mDp, mGridRect); mThumbnailData.rotation = mOrientationState.getDisplayRotation(); mPositionHelper.updateThumbnailMatrix( Loading Loading @@ -304,24 +306,34 @@ public class TaskViewSimulator implements TransformParams.BuilderProxy { mMatrix.postTranslate(insets.left, insets.top); mMatrix.postScale(scale, scale); // Apply TaskView matrix: gridProgress related properties float interpolatedGridProgress = ACCEL_DEACCEL.getInterpolation(gridProgress.value); // Apply TaskView matrix: gridProgress final int boxLength = (int) Math.max(taskWidth, taskHeight); float availableHeight = mTaskThumbnailPadding + taskHeight + mSizeStrategy.getOverviewActionsHeight( mContext); float availableHeight = mGridRect.height(); float rowHeight = (availableHeight - mRowSpacing) / 2; float gridScale = rowHeight / (boxLength + mTaskThumbnailPadding); scale = Utilities.mapRange(interpolatedGridProgress, 1f, gridScale); mMatrix.postScale(scale, scale, mIsRecentsRtl ? 0 : taskWidth, 0); float taskWidthDiff = taskWidth * (1 - gridScale); float taskWidthOffset = mIsRecentsRtl ? taskWidthDiff : -taskWidthDiff; mOrientationState.getOrientationHandler().set(mMatrix, MATRIX_POST_TRANSLATE, Utilities.mapRange(interpolatedGridProgress, 0, taskWidthOffset)); mOrientationState.getOrientationHandler().setSecondary(mMatrix, MATRIX_POST_TRANSLATE, Utilities.mapRange(interpolatedGridProgress, 0, gridTranslationSecondary.value)); // Apply TaskView matrix: task rect and grid rect difference float scaledWidth = taskWidth * gridScale; float taskGridHorizontalDiff; if (mIsRecentsRtl) { float taskRight = mTaskRect.left + scaledWidth; taskGridHorizontalDiff = mGridRect.right - taskRight; } else { float taskLeft = mTaskRect.right - scaledWidth; taskGridHorizontalDiff = mGridRect.left - taskLeft; } float taskGridVerticalDiff = mGridRect.top + mTaskThumbnailPadding * gridScale - mTaskRect.top; mOrientationState.getOrientationHandler().set(mMatrix, MATRIX_POST_TRANSLATE, Utilities.mapRange(interpolatedGridProgress, 0, taskGridHorizontalDiff)); mOrientationState.getOrientationHandler().setSecondary(mMatrix, MATRIX_POST_TRANSLATE, Utilities.mapRange(interpolatedGridProgress, 0, taskGridVerticalDiff)); // Apply TaskView matrix: translate, scroll mMatrix.postTranslate(mTaskRect.left, mTaskRect.top); mOrientationState.getOrientationHandler().set(mMatrix, MATRIX_POST_TRANSLATE, Loading
quickstep/src/com/android/quickstep/views/RecentsView.java +31 −28 Original line number Diff line number Diff line Loading @@ -264,6 +264,7 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView protected final TransformParams mLiveTileParams = new TransformParams(); protected final TaskViewSimulator mLiveTileTaskViewSimulator; protected final Rect mLastComputedTaskSize = new Rect(); protected final Rect mLastComputedGridSize = new Rect(); // How much a task that is directly offscreen will be pushed out due to RecentsView scale/pivot. protected Float mLastComputedTaskPushOutDistance = null; protected boolean mEnableDrawingLiveTile = false; Loading Loading @@ -471,7 +472,7 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView setLayoutDirection(mIsRtl ? View.LAYOUT_DIRECTION_RTL : View.LAYOUT_DIRECTION_LTR); mTaskTopMargin = getResources() .getDimensionPixelSize(R.dimen.task_thumbnail_top_margin); mRowSpacing = (int) getResources().getDimension(R.dimen.recents_row_spacing); mRowSpacing = getResources().getDimensionPixelSize(R.dimen.overview_grid_row_spacing); mSquaredTouchSlop = squaredTouchSlop(context); mEmptyIcon = context.getDrawable(R.drawable.ic_empty_recents); Loading Loading @@ -1012,6 +1013,10 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView setPadding(mTempRect.left - mInsets.left, mTempRect.top - mInsets.top, dp.widthPx - mInsets.right - mTempRect.right, dp.heightPx - mInsets.bottom - mTempRect.bottom); mSizeStrategy.calculateGridSize(mActivity, mActivity.getDeviceProfile(), mLastComputedGridSize); // Force TaskView to update size from thumbnail updateTaskSize(); } Loading Loading @@ -1521,22 +1526,10 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView } final int boxLength = Math.max(mTaskWidth, mTaskHeight); float availableHeight = mTaskTopMargin + mTaskHeight + mSizeStrategy.getOverviewActionsHeight(mContext); float availableHeight = mLastComputedGridSize.height(); float rowHeight = (availableHeight - mRowSpacing) / 2; float gridScale = rowHeight / (boxLength + mTaskTopMargin); TaskView firstTask = getTaskViewAt(0); float firstTaskWidthOffset; if (mIsRtl) { // Move the first task to the right edge. firstTaskWidthOffset = mTaskWidth - firstTask.getLayoutParams().width * gridScale; } else { // Move the first task to the left edge. firstTaskWidthOffset = -firstTask.getLayoutParams().width * (1 - gridScale); } int topRowWidth = 0; int bottomRowWidth = 0; float topAccumulatedTranslationX = 0; Loading @@ -1546,13 +1539,22 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView for (int i = 0; i < taskCount; i++) { TaskView taskView = getTaskViewAt(i); taskView.setGridScale(gridScale); gridTranslations[i] = 0; float taskWidthDiff = mTaskWidth - taskView.getLayoutParams().width * gridScale; float taskWidthOffset = mIsRtl ? taskWidthDiff : -taskWidthDiff; // Visually we want to move all task by firstTaskWidthOffset, but calculate page scroll // according to right edge (or left in nonRtl) of TaskView. gridTranslations[i] = firstTaskWidthOffset - taskWidthOffset; taskView.setGridOffsetTranslationX(taskWidthOffset); float scaledWidth = taskView.getLayoutParams().width * gridScale; float taskGridHorizontalDiff; if (mIsRtl) { float taskRight = mLastComputedTaskSize.left + scaledWidth; taskGridHorizontalDiff = mLastComputedGridSize.right - taskRight; } else { float taskLeft = mLastComputedTaskSize.right - scaledWidth; taskGridHorizontalDiff = mLastComputedGridSize.left - taskLeft; } gridTranslations[i] -= taskGridHorizontalDiff; taskView.setGridOffsetTranslationX(taskGridHorizontalDiff); float taskGridVerticalDiff = mLastComputedGridSize.top + mTaskTopMargin * gridScale - mLastComputedTaskSize.top; // Off-set gap due to task scaling. float widthDiff = taskView.getLayoutParams().width * (1 - gridScale); Loading @@ -1567,7 +1569,7 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView topRowWidth += taskView.getLayoutParams().width * gridScale + mPageSpacing; topSet.add(i); taskView.setGridTranslationY(0); taskView.setGridTranslationY(taskGridVerticalDiff); // Move horizontally into empty space. float widthOffset = 0; Loading @@ -1578,15 +1580,14 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView float gridTranslationX = mIsRtl ? widthOffset : -widthOffset; gridTranslations[i] += gridTranslationX; topAccumulatedTranslationX += gridTranslationX + gridScaleTranslationX; bottomAccumulatedTranslationX += gridScaleTranslationX; topAccumulatedTranslationX += gridTranslationX; } else { gridTranslations[i] += bottomAccumulatedTranslationX; bottomRowWidth += taskView.getLayoutParams().width * gridScale + mPageSpacing; // Move into bottom row. float heightOffset = (boxLength + mTaskTopMargin) * gridScale + mRowSpacing; taskView.setGridTranslationY(heightOffset); taskView.setGridTranslationY(heightOffset + taskGridVerticalDiff); // Move horizontally into empty space. float widthOffset = 0; Loading @@ -1597,9 +1598,10 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView float gridTranslationX = mIsRtl ? widthOffset : -widthOffset; gridTranslations[i] += gridTranslationX; topAccumulatedTranslationX += gridScaleTranslationX; bottomAccumulatedTranslationX += gridTranslationX + gridScaleTranslationX; bottomAccumulatedTranslationX += gridTranslationX; } topAccumulatedTranslationX += gridScaleTranslationX; bottomAccumulatedTranslationX += gridScaleTranslationX; } // Use the accumulated translation of the longer row. Loading Loading @@ -1632,8 +1634,9 @@ public abstract class RecentsView<T extends StatefulActivity> extends PagedView mIsRtl ? -shortTotalCompensation : shortTotalCompensation; } float clearAllTotalTranslationX = firstTaskWidthOffset + clearAllAccumulatedTranslation + clearAllShorterRowCompensation + clearAllShortTotalCompensation; float clearAllTotalTranslationX = clearAllAccumulatedTranslation + clearAllShorterRowCompensation + clearAllShortTotalCompensation; // We need to maintain first task's grid translation at 0, now shift translation of all // the TaskViews to achieve that. Loading