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

Commit 460638e5 authored by Alex Chau's avatar Alex Chau
Browse files

Fix grid layout problem after going back from split select

- Don't reset mFocusedTaskViewId when focused task become split, so it's reset properly when it's added back to RecentsView
- Moved applySplitScrollOffset to RecentsViewStateController to be called after mSplitHiddenTaskView is added back to RecentsView
- Update scroll after going back from split
- Don't reset mSplitHiddenTaskView's translation as it'll clear the grid translations

Test: manual
Bug: 181707736
Change-Id: I4bd204fc537ee520216f875b3eddf4dc94f7bfd8
parent 0b7ed895
Loading
Loading
Loading
Loading
+0 −13
Original line number Diff line number Diff line
@@ -16,7 +16,6 @@

package com.android.launcher3.uioverrides;

import static com.android.launcher3.LauncherState.OVERVIEW_SPLIT_SELECT;
import static com.android.launcher3.anim.Interpolators.AGGRESSIVE_EASE_IN_OUT;
import static com.android.launcher3.anim.Interpolators.FINAL_FRAME;
import static com.android.launcher3.anim.Interpolators.INSTANT;
@@ -73,8 +72,6 @@ public abstract class BaseRecentsViewStateController<T extends RecentsView>
        getTaskModalnessProperty().set(mRecentsView, state.getOverviewModalness());
        RECENTS_GRID_PROGRESS.set(mRecentsView,
                state.displayOverviewTasksAsGrid(mLauncher.getDeviceProfile()) ? 1f : 0f);

        applySplitScrollOffset(state);
    }

    @Override
@@ -120,16 +117,6 @@ public abstract class BaseRecentsViewStateController<T extends RecentsView>
        boolean showAsGrid = toState.displayOverviewTasksAsGrid(mLauncher.getDeviceProfile());
        setter.setFloat(mRecentsView, RECENTS_GRID_PROGRESS, showAsGrid ? 1f : 0f,
                showAsGrid ? INSTANT : FINAL_FRAME);

        applySplitScrollOffset(toState);
    }

    private void applySplitScrollOffset(@NonNull final LauncherState state) {
        if (state == OVERVIEW_SPLIT_SELECT) {
            mRecentsView.applySplitPrimaryScrollOffset();
        } else {
            mRecentsView.resetSplitPrimaryScrollOffset();
        }
    }

    abstract FloatProperty getTaskModalnessProperty();
+2 −0
Original line number Diff line number Diff line
@@ -83,8 +83,10 @@ public final class RecentsViewStateController extends
        LauncherState currentState = mLauncher.getStateManager().getState();
        if (isSplitSelectionState(toState) && !isSplitSelectionState(currentState)) {
            builder.add(mRecentsView.createSplitSelectInitAnimation().buildAnim());
            mRecentsView.applySplitPrimaryScrollOffset();
        } else if (!isSplitSelectionState(toState) && isSplitSelectionState(currentState)) {
            builder.add(mRecentsView.cancelSplitSelect(true).buildAnim());
            mRecentsView.resetSplitPrimaryScrollOffset();
        }

        setAlphas(builder, config, toState);
+7 −12
Original line number Diff line number Diff line
@@ -3120,14 +3120,10 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
                        }
                    } else {
                        // Update focus task and its size.
                        if (finalIsFocusedTaskDismissed) {
                            if (finalNextFocusedTaskView != null) {
                        if (finalIsFocusedTaskDismissed && finalNextFocusedTaskView != null) {
                            mFocusedTaskViewId = finalNextFocusedTaskView.getTaskViewId();
                            mTopRowIdSet.remove(mFocusedTaskViewId);
                            finalNextFocusedTaskView.animateIconScaleAndDimIntoView();
                            } else {
                                mFocusedTaskViewId = -1;
                            }
                        }
                        updateTaskSize(/*isTaskDismissal=*/ true);
                        updateChildTaskOrientations();
@@ -4021,6 +4017,7 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
                //  * Focused Task
                updateGridProperties();
                resetFromSplitSelectionState();
                updateScrollSynchronously();
            }
        });

@@ -4042,7 +4039,6 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
        resetTaskVisuals();
        mSplitHiddenTaskViewIndex = -1;
        if (mSplitHiddenTaskView != null) {
            mSplitHiddenTaskView.setTranslationY(0);
            mSplitHiddenTaskView.setVisibility(VISIBLE);
            mSplitHiddenTaskView = null;
        }
@@ -4503,9 +4499,8 @@ public abstract class RecentsView<ACTIVITY_TYPE extends StatefulActivity<STATE_T
    }

    private int getFirstViewIndex() {
        return mShowAsGridLastOnLayout && mFocusedTaskViewId != -1
                ? indexOfChild(getFocusedTaskView())
                : 0;
        TaskView focusedTaskView = mShowAsGridLastOnLayout ? getFocusedTaskView() : null;
        return focusedTaskView != null ? indexOfChild(focusedTaskView) : 0;
    }

    private int getLastViewIndex() {