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

Commit c54c748e authored by Winson's avatar Winson
Browse files

Ensuring that the dock state is opposite of the nav bar.

- The nav bar now moves to follow a specific edge of the device, so we
  should always choose the opposite end of the screen to ensure a valid
  drop target is accessible.

Bug: 30548794
Change-Id: Icac8adfb167a4115377d42ddd897ac94e02077a3
parent af74842e
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -222,6 +222,13 @@ public class RecentsView extends FrameLayout {
        return mBackgroundScrim;
    }

    /**
     * Returns whether the nav bar is on the right.
     */
    public boolean isNavBarOnRight() {
        return mSystemInsets.right > 0;
    }

    /**
     * Returns whether the last task launched was in the freeform stack or not.
     */
+17 −6
Original line number Diff line number Diff line
@@ -45,10 +45,14 @@ import java.util.ArrayList;
 * Represents the dock regions for each orientation.
 */
class DockRegion {
    public static TaskStack.DockState[] PHONE_LANDSCAPE = {
            // We only allow docking to the left for now on small devices
    // The phone landscape dock states correspond to the opposite end of the screen that the nav bar
    // appears
    public static TaskStack.DockState[] PHONE_LANDSCAPE_LEFT = {
            TaskStack.DockState.LEFT
    };
    public static TaskStack.DockState[] PHONE_LANDSCAPE_RIGHT = {
            TaskStack.DockState.RIGHT
    };
    public static TaskStack.DockState[] PHONE_PORTRAIT = {
            // We only allow docking to the top for now on small devices
            TaskStack.DockState.TOP
@@ -113,10 +117,17 @@ public class RecentsViewTouchHandler {
        boolean isLandscape = mRv.getResources().getConfiguration().orientation ==
                Configuration.ORIENTATION_LANDSCAPE;
        RecentsConfiguration config = Recents.getConfiguration();
        TaskStack.DockState[] dockStates = isLandscape ?
                (config.isLargeScreen ? DockRegion.TABLET_LANDSCAPE : DockRegion.PHONE_LANDSCAPE) :
                (config.isLargeScreen ? DockRegion.TABLET_PORTRAIT : DockRegion.PHONE_PORTRAIT);
        return dockStates;
        if (config.isLargeScreen) {
            return isLandscape ? DockRegion.TABLET_LANDSCAPE : DockRegion.TABLET_PORTRAIT;
        } else {
            if (isLandscape) {
                return mRv.isNavBarOnRight()
                        ? DockRegion.PHONE_LANDSCAPE_LEFT
                        : DockRegion.PHONE_LANDSCAPE_RIGHT;
            } else {
                return DockRegion.PHONE_PORTRAIT;
            }
        }
    }

    /**