diff --git a/quickstep/src/com/android/launcher3/uioverrides/states/OverviewModalTaskState.java b/quickstep/src/com/android/launcher3/uioverrides/states/OverviewModalTaskState.java index 0c49e5fc69..b9221eef9d 100644 --- a/quickstep/src/com/android/launcher3/uioverrides/states/OverviewModalTaskState.java +++ b/quickstep/src/com/android/launcher3/uioverrides/states/OverviewModalTaskState.java @@ -18,12 +18,12 @@ package com.android.launcher3.uioverrides.states; import static com.android.launcher3.logging.StatsLogManager.LAUNCHER_STATE_OVERVIEW; import android.content.Context; -import android.graphics.Point; import android.graphics.Rect; import com.android.launcher3.BaseDraggingActivity; import com.android.launcher3.Launcher; import com.android.launcher3.LauncherState; +import com.android.launcher3.config.FeatureFlags; import com.android.quickstep.views.RecentsView; /** @@ -70,13 +70,22 @@ public class OverviewModalTaskState extends OverviewState { } } - public static float[] getOverviewScaleAndOffsetForModalState(BaseDraggingActivity activity) { - Point taskSize = activity.getOverviewPanel().getSelectedTaskSize(); - Rect modalTaskSize = new Rect(); - activity.getOverviewPanel().getModalTaskSize(modalTaskSize); + @Override + public boolean isTaskbarStashed(Launcher launcher) { + if (FeatureFlags.ENABLE_GRID_ONLY_OVERVIEW.get()) { + return true; + } + return super.isTaskbarStashed(launcher); + } - float scale = Math.min((float) modalTaskSize.height() / taskSize.y, - (float) modalTaskSize.width() / taskSize.x); + public static float[] getOverviewScaleAndOffsetForModalState(BaseDraggingActivity activity) { + RecentsView recentsView = activity.getOverviewPanel(); + Rect taskSize = recentsView.getSelectedTaskBounds(); + Rect modalTaskSize = new Rect(); + recentsView.getModalTaskSize(modalTaskSize); + + float scale = Math.min((float) modalTaskSize.height() / taskSize.height(), + (float) modalTaskSize.width() / taskSize.width()); return new float[] {scale, NO_OFFSET}; } diff --git a/quickstep/src/com/android/quickstep/BaseActivityInterface.java b/quickstep/src/com/android/quickstep/BaseActivityInterface.java index f9ad7491c7..998439e891 100644 --- a/quickstep/src/com/android/quickstep/BaseActivityInterface.java +++ b/quickstep/src/com/android/quickstep/BaseActivityInterface.java @@ -52,6 +52,7 @@ import com.android.launcher3.DeviceProfile; import com.android.launcher3.R; import com.android.launcher3.anim.AnimatorPlaybackController; import com.android.launcher3.anim.PendingAnimation; +import com.android.launcher3.config.FeatureFlags; import com.android.launcher3.statehandlers.DepthController; import com.android.launcher3.statehandlers.DesktopVisibilityController; import com.android.launcher3.statemanager.BaseState; @@ -339,12 +340,21 @@ public abstract class BaseActivityInterface screenshotShortcuts = TaskShortcutFactory.SCREENSHOT .getShortcuts(activity, taskContainer); diff --git a/quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java b/quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java index db6d56b41b..4b1dd439f3 100644 --- a/quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java +++ b/quickstep/src/com/android/quickstep/fallback/FallbackRecentsView.java @@ -15,6 +15,8 @@ */ package com.android.quickstep.fallback; +import static android.app.ActivityTaskManager.INVALID_TASK_ID; + import static com.android.quickstep.GestureState.GestureEndTarget.RECENTS; import static com.android.quickstep.fallback.RecentsState.DEFAULT; import static com.android.quickstep.fallback.RecentsState.HOME; @@ -200,8 +202,9 @@ public class FallbackRecentsView extends RecentsView extends FrameLayo return mDp.getOverviewActionsClaimedSpaceBelow(); } + if (mDp.isTablet && FeatureFlags.ENABLE_GRID_ONLY_OVERVIEW.get()) { + return mDp.stashedTaskbarSize; + } + // Align to bottom of task Rect. return mDp.heightPx - mTaskSize.bottom - mDp.overviewActionsTopMarginPx - mDp.overviewActionsHeight; diff --git a/quickstep/src/com/android/quickstep/views/RecentsView.java b/quickstep/src/com/android/quickstep/views/RecentsView.java index bcb109cb76..e529b04577 100644 --- a/quickstep/src/com/android/quickstep/views/RecentsView.java +++ b/quickstep/src/com/android/quickstep/views/RecentsView.java @@ -453,6 +453,7 @@ public abstract class RecentsView 0; + if (isModalGridWithoutFocusedTask) { + modalMidpoint = indexOfChild(mSelectedTask); + } float midpointOffsetSize = 0; float leftOffsetSize = midpoint - 1 >= 0 @@ -4150,7 +4193,6 @@ public abstract class RecentsView remoteTargetHandle.getTaskViewSimulator() - .taskPrimaryTranslation.value = totalTranslation); + .taskPrimaryTranslation.value = totalTranslationX); redrawLiveTile(); } + + if (showAsGrid && ENABLE_GRID_ONLY_OVERVIEW.get() && child instanceof TaskView) { + float totalTranslationY = getVerticalOffsetSize(i, modalOffset); + FloatProperty translationPropertyY = + ((TaskView) child).getSecondaryTaskOffsetTranslationProperty(); + translationPropertyY.set(child, totalTranslationY); + } } updateCurveProperties(); } @@ -4292,6 +4345,38 @@ public abstract class RecentsView getSecondaryTaskOffsetTranslationProperty() { + return getPagedOrientationHandler().getSecondaryValue( + TASK_OFFSET_TRANSLATION_X, TASK_OFFSET_TRANSLATION_Y); + } + public FloatProperty getTaskResistanceTranslationProperty() { return getPagedOrientationHandler().getSecondaryValue( TASK_RESISTANCE_TRANSLATION_X, TASK_RESISTANCE_TRANSLATION_Y); diff --git a/src/com/android/launcher3/Utilities.java b/src/com/android/launcher3/Utilities.java index b32ff3c09d..67bc7fc023 100644 --- a/src/com/android/launcher3/Utilities.java +++ b/src/com/android/launcher3/Utilities.java @@ -38,6 +38,7 @@ import android.graphics.LightingColorFilter; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.Point; +import android.graphics.PointF; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.drawable.AdaptiveIconDrawable; @@ -342,6 +343,21 @@ public final class Utilities { return scale; } + /** + * Sets the x and y pivots for scaling from one Rect to another. + * + * @param src the source rectangle to scale from. + * @param dst the destination rectangle to scale to. + * @param outPivot the pivots set for scaling from src to dst. + */ + public static void getPivotsForScalingRectToRect(Rect src, Rect dst, PointF outPivot) { + float pivotXPct = ((float) src.left - dst.left) / ((float) dst.width() - src.width()); + outPivot.x = dst.left + dst.width() * pivotXPct; + + float pivotYPct = ((float) src.top - dst.top) / ((float) dst.height() - src.height()); + outPivot.y = dst.top + dst.height() * pivotYPct; + } + /** * Maps t from one range to another range. * @param t The value to map.