OSDN Git Service

Ensuring that the dock state is opposite of the nav bar.
authorWinson <winsonc@google.com>
Wed, 3 Aug 2016 23:25:20 +0000 (16:25 -0700)
committerWinson <winsonc@google.com>
Wed, 3 Aug 2016 23:39:38 +0000 (16:39 -0700)
- 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

packages/SystemUI/src/com/android/systemui/recents/views/RecentsView.java
packages/SystemUI/src/com/android/systemui/recents/views/RecentsViewTouchHandler.java

index 43d0cf6..4162208 100644 (file)
@@ -223,6 +223,13 @@ public class RecentsView extends FrameLayout {
     }
 
     /**
+     * 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.
      */
     public boolean isLastTaskLaunchedFreeform() {
index c692a16..55d9964 100644 (file)
@@ -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;
+            }
+        }
     }
 
     /**