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

Commit 04bd0fa0 authored by Tony Huang's avatar Tony Huang
Browse files

Avoid re-launch button show after split switching

Due to difference of both side insets value, split bounds will
change after split switching. But bounds difference are actually
small. For users, they might not notice bounds change but re-launch
button show there might cause them confused.

Igonre insets difference and make them same as the larger one on split
axis. This will offset drag target position but should cause bad UX
experience because the offset should be very small and both insest
should not have big difference on general case.

Fix: 236400046
Test: manual
Test: pass existing tests
Change-Id: I91d3a43015b7ef0a35c4e755de085053dfb9977b
parent b8cbfd3f
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -449,13 +449,25 @@ public final class SplitLayout implements DisplayInsetsController.OnInsetsChange
    private DividerSnapAlgorithm getSnapAlgorithm(Context context, Rect rootBounds,
            @Nullable Rect stableInsets) {
        final boolean isLandscape = isLandscape(rootBounds);
        final Rect insets = stableInsets != null ? stableInsets : getDisplayInsets(context);

        // Make split axis insets value same as the larger one to avoid bounds1 and bounds2
        // have difference after split switching for solving issues on non-resizable app case.
        if (isLandscape) {
            final int largerInsets = Math.max(insets.left, insets.right);
            insets.set(largerInsets, insets.top, largerInsets, insets.bottom);
        } else {
            final int largerInsets = Math.max(insets.top, insets.bottom);
            insets.set(insets.left, largerInsets, insets.right, largerInsets);
        }

        return new DividerSnapAlgorithm(
                context.getResources(),
                rootBounds.width(),
                rootBounds.height(),
                mDividerSize,
                !isLandscape,
                stableInsets != null ? stableInsets : getDisplayInsets(context),
                insets,
                isLandscape ? DOCKED_LEFT : DOCKED_TOP /* dockSide */);
    }