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

Commit 0a4215b3 authored by Tony Huang's avatar Tony Huang
Browse files

Don't dismiss split during enter if already visible

Open to side enter transition is only used if split is active and
foreground. We will check exception case if changes on both stage
didn't include in this transition. But this exception case should
happen usually while user trying to launch same app which already
on front. So we should not dismiss split itself and just log it.

Fix: 285795299
Test: manual
Test: pass existing tests
Change-Id: Idf6c38ade49ce25f1301e0ca4bb17210dcb906f9
parent 5831c74c
Loading
Loading
Loading
Loading
+7 −3
Original line number Diff line number Diff line
@@ -1497,6 +1497,10 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,
            // Legacy transition we need to create divider here, shell transition case we will
            // create it on #finishEnterSplitScreen
            mSplitLayout.init();
        } else {
            // We handle split visibility itself on shell transition, but sometimes we didn't
            // reset it correctly after dismiss by some reason, so just set invisible before active.
            setSplitsVisible(false);
        }
        if (taskInfo != null) {
            setSideStagePosition(startPosition, wct);
@@ -2638,11 +2642,11 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler,

        if (mSplitTransitions.mPendingEnter.mExtraTransitType
                == TRANSIT_SPLIT_SCREEN_OPEN_TO_SIDE) {
            // Open to side should only be used when split already active and foregorund.
            if (mainChild == null && sideChild == null) {
                Log.w(TAG, "Launched a task in split, but didn't receive any task in transition.");
                mSplitTransitions.mPendingEnter.cancel((cancelWct, cancelT)
                        -> prepareExitSplitScreen(STAGE_TYPE_UNDEFINED, cancelWct));
                mSplitUnsupportedToast.show();
                // This should happen when the target app is already on front, so just cancel.
                mSplitTransitions.mPendingEnter.cancel(null);
                return true;
            }
        } else {