Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 45e0a900 authored by Ats Jenk's avatar Ats Jenk
Browse files

Support large desktop tile in grid only overview

Based on UX specs, desktop tile should be using the large size and be
pinned ot the right in overview.
Updates to ensure the desktop tile is using the focused tile size when
grid only overview is enabled.

Test: enable grid only overview, have some fullscreen tasks in overview
  and some desktop tasks, open overview from home, observe desktop tile
  peeks from right
Test: same setup as before, open a fullscreen app, open overview,
  observe desktop tile peeks in from right
Test: same setup as before, go to desktop, open overview, observe
  desktop tile is focused
Test: turn off grid only overview, repeat the same test case

Bug: 271131878

Change-Id: Ic804428dca415f08a26c47e1d6b9b3a94fcfbfdf
parent a695986d
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -349,6 +349,13 @@ public abstract class BaseActivityInterface<STATE_TYPE extends BaseState<STATE_T
        Gravity.apply(gravity, outWidth, outHeight, potentialTaskRect, outRect);
    }

    /**
     * Calculates the task size for the desktop task
     */
    public final void calculateDesktopTaskSize(Context context, DeviceProfile dp, Rect outRect) {
        calculateFocusTaskSize(context, dp, outRect);
    }

    /**
     * Calculates the modal taskView size for the provided device configuration
     */
+15 −2
Original line number Diff line number Diff line
@@ -451,6 +451,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
    protected final Rect mLastComputedTaskSize = new Rect();
    protected final Rect mLastComputedGridSize = new Rect();
    protected final Rect mLastComputedGridTaskSize = new Rect();
    protected final Rect mLastComputedDesktopTaskSize = new Rect();
    private TaskView mSelectedTask = null;
    // How much a task that is directly offscreen will be pushed out due to RecentsView scale/pivot.
    @Nullable
@@ -1941,6 +1942,10 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
                mLastComputedGridSize);
        mSizeStrategy.calculateGridTaskSize(mActivity, mActivity.getDeviceProfile(),
                mLastComputedGridTaskSize, mOrientationHandler);
        if (DesktopTaskView.DESKTOP_IS_PROTO2_ENABLED) {
            mSizeStrategy.calculateDesktopTaskSize(mActivity, mActivity.getDeviceProfile(),
                    mLastComputedDesktopTaskSize);
        }

        mTaskGridVerticalDiff = mLastComputedGridTaskSize.top - mLastComputedTaskSize.top;
        mTopBottomRowHeightDiff =
@@ -2031,6 +2036,11 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
        return mLastComputedGridTaskSize;
    }

    /** Gets the last computed desktop task size */
    public Rect getLastComputedDesktopTaskSize() {
        return mLastComputedDesktopTaskSize;
    }

    /** Gets the task size for modal state. */
    public void getModalTaskSize(Rect outRect) {
        mSizeStrategy.calculateModalTaskSize(mActivity, mActivity.getDeviceProfile(), outRect,
@@ -2765,10 +2775,13 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
            } else if (taskView.isDesktopTask()) {
                // Desktop task was not focused. Pin it to the right of focused
                desktopTaskIndex = i;
                if (!ENABLE_GRID_ONLY_OVERVIEW.get()) {
                    // Only apply x-translation when using legacy overview grid
                    gridTranslations[i] += mIsRtl ? taskWidthAndSpacing : -taskWidthAndSpacing;
                }

                // Center view vertically in case it's from different orientation.
                taskView.setGridTranslationY((mLastComputedTaskSize.height() + taskTopMargin
                taskView.setGridTranslationY((mLastComputedDesktopTaskSize.height() + taskTopMargin
                        - taskView.getLayoutParams().height) / 2f);
            } else {
                if (i > focusedTaskIndex) {
+6 −1
Original line number Diff line number Diff line
@@ -1619,7 +1619,12 @@ public class TaskView extends FrameLayout implements Reusable {
            int boxWidth;
            int boxHeight;
            boolean isFocusedTask = isFocusedTask();
            if (isFocusedTask || isDesktopTask()) {
            if (isDesktopTask()) {
                Rect lastComputedDesktopTaskSize =
                        getRecentsView().getLastComputedDesktopTaskSize();
                boxWidth = lastComputedDesktopTaskSize.width();
                boxHeight = lastComputedDesktopTaskSize.height();
            } else if (isFocusedTask) {
                // Task will be focused and should use focused task size. Use focusTaskRatio
                // that is associated with the original orientation of the focused task.
                boxWidth = taskWidth;