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

Commit 752ae6ea authored by Shuming Hao's avatar Shuming Hao
Browse files

Disable flexible split in connected displays

When a device that supports flexible split is connected to external
display, we should disable flexible split (90:10) in connected displays.

Bug: 438519653
Test: manual and atest
Flag: EXEMPT BUGFIX
Change-Id: I50f5b0fc49bea776b6f9eaced9fc20e017244a02
parent d0075dd9
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package com.android.wm.shell.common.split;

import static android.view.Display.DEFAULT_DISPLAY;
import static android.view.WindowManager.DOCKED_LEFT;
import static android.view.WindowManager.DOCKED_RIGHT;

@@ -31,6 +32,7 @@ import static com.android.wm.shell.shared.split.SplitScreenConstants.SnapPositio

import android.content.res.Resources;
import android.graphics.Rect;
import android.window.DesktopExperienceFlags;

import androidx.annotation.Nullable;

@@ -139,14 +141,16 @@ public class DividerSnapAlgorithm {
    private MotionSpec mMotionSpec;

    public DividerSnapAlgorithm(Resources res, int displayWidth, int displayHeight, int dividerSize,
            boolean isLeftRightSplit, Rect insets, Rect pinnedTaskbarInsets, int dockSide) {
            boolean isLeftRightSplit, Rect insets, Rect pinnedTaskbarInsets, int dockSide,
            int displayId) {
        this(res, displayWidth, displayHeight, dividerSize, isLeftRightSplit, insets,
                pinnedTaskbarInsets, dockSide, false /* minimized */, true /* resizable */);
                pinnedTaskbarInsets, dockSide, displayId, false /* minimized */,
                true /* resizable */);
    }

    public DividerSnapAlgorithm(Resources res, int displayWidth, int displayHeight, int dividerSize,
            boolean isLeftRightSplit, Rect insets, Rect pinnedTaskbarInsets, int dockSide,
            boolean isMinimizedMode, boolean isHomeResizable) {
            int displayId, boolean isMinimizedMode, boolean isHomeResizable) {
        mMinFlingVelocityPxPerSecond =
                MIN_FLING_VELOCITY_DP_PER_SECOND * res.getDisplayMetrics().density;
        mMinDismissVelocityPxPerSecond =
@@ -158,7 +162,10 @@ public class DividerSnapAlgorithm {
        mDockSide = dockSide;
        mInsets.set(insets);
        mPinnedTaskbarInsets.set(pinnedTaskbarInsets);
        if (Flags.enableFlexibleTwoAppSplit()) {
        final boolean enableNonDefaultDisplaySplit =
                DesktopExperienceFlags.ENABLE_NON_DEFAULT_DISPLAY_SPLIT.isTrue();
        if (Flags.enableFlexibleTwoAppSplit()
                && (!enableNonDefaultDisplaySplit || displayId == DEFAULT_DISPLAY)) {
            mSnapMode = SNAP_FLEXIBLE_HYBRID;
        } else {
            // Set SNAP_MODE_MINIMIZED, SNAP_MODE_16_9, or SNAP_FIXED_RATIO depending on config
+2 −1
Original line number Diff line number Diff line
@@ -936,7 +936,8 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
                mIsLeftRightSplit,
                insets,
                mPinnedTaskbarInsets.toRect(),
                mIsLeftRightSplit ? DOCKED_LEFT : DOCKED_TOP /* dockSide */);
                mIsLeftRightSplit ? DOCKED_LEFT : DOCKED_TOP /* dockSide */,
                mContext.getDisplay().getDisplayId());
    }

    /** Fling divider from current position to end or start position then exit */