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

Commit dc8912b2 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Delay changing state of added fragments until all executed."

parents 5d6791a0 a42f8e41
Loading
Loading
Loading
Loading
+5 −2
Original line number Diff line number Diff line
@@ -813,8 +813,11 @@ final class BackStackRecord extends FragmentTransaction implements
    /**
     * Reverses the execution of the operations within this transaction. The Fragment states will
     * only be modified if optimizations are not allowed.
     *
     * @param moveToState {@code true} if added fragments should be moved to their final state
     *                    in unoptimized transactions
     */
    void executePopOps() {
    void executePopOps(boolean moveToState) {
        for (int opNum = mOps.size() - 1; opNum >= 0; opNum--) {
            final Op op = mOps.get(opNum);
            Fragment f = op.fragment;
@@ -860,7 +863,7 @@ final class BackStackRecord extends FragmentTransaction implements
                mManager.moveFragmentToExpectedState(f);
            }
        }
        if (!mAllowOptimization) {
        if (!mAllowOptimization && moveToState) {
            mManager.moveToState(mManager.mCurState, true);
        }
    }
+5 −2
Original line number Diff line number Diff line
@@ -2170,7 +2170,7 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate
                if (isPop) {
                    record.executeOps();
                } else {
                    record.executePopOps();
                    record.executePopOps(false);
                }

                // move to the end
@@ -2280,7 +2280,10 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate
            final boolean isPop = isRecordPop.get(i);
            if (isPop) {
                record.bumpBackStackNesting(-1);
                record.executePopOps();
                // Only execute the add operations at the end of
                // all transactions.
                boolean moveToState = i == (endIndex - 1);
                record.executePopOps(moveToState);
            } else {
                record.bumpBackStackNesting(1);
                record.executeOps();