OSDN Git Service

Merge "Update dock stack create mode after rotation if dock side changed" into nyc-dev
authorChong Zhang <chz@google.com>
Wed, 25 May 2016 22:42:55 +0000 (22:42 +0000)
committerAndroid (Google) Code Review <android-gerrit@google.com>
Wed, 25 May 2016 22:42:56 +0000 (22:42 +0000)
services/core/java/com/android/server/wm/TaskStack.java
services/core/java/com/android/server/wm/WindowManagerService.java

index f51fd8a..aaa7a57 100644 (file)
@@ -17,6 +17,7 @@
 package com.android.server.wm;
 
 import static android.app.ActivityManager.DOCKED_STACK_CREATE_MODE_TOP_OR_LEFT;
+import static android.app.ActivityManager.DOCKED_STACK_CREATE_MODE_BOTTOM_OR_RIGHT;
 import static android.app.ActivityManager.StackId.DOCKED_STACK_ID;
 import static android.app.ActivityManager.StackId.HOME_STACK_ID;
 import static android.app.ActivityManager.StackId.PINNED_STACK_ID;
@@ -403,6 +404,13 @@ public class TaskStack implements DimLayer.DimLayerUser,
             snapDockedStackAfterRotation(mTmpRect2);
             final int newDockSide = getDockSide(mTmpRect2);
             if (oldDockSide != newDockSide) {
+                // Update the dock create mode and clear the dock create bounds, these
+                // might change after a rotation and the original values will be invalid.
+                mService.setDockedStackCreateStateLocked(
+                        (newDockSide == DOCKED_LEFT || newDockSide == DOCKED_TOP)
+                        ? DOCKED_STACK_CREATE_MODE_TOP_OR_LEFT
+                        : DOCKED_STACK_CREATE_MODE_BOTTOM_OR_RIGHT,
+                        null);
                 mDisplayContent.getDockedDividerController().notifyDockSideChanged(newDockSide);
             }
         }
index d496510..c7148c1 100644 (file)
@@ -4959,11 +4959,15 @@ public class WindowManagerService extends IWindowManager.Stub
 
     public void setDockedStackCreateState(int mode, Rect bounds) {
         synchronized (mWindowMap) {
-            mDockedStackCreateMode = mode;
-            mDockedStackCreateBounds = bounds;
+            setDockedStackCreateStateLocked(mode, bounds);
         }
     }
 
+    void setDockedStackCreateStateLocked(int mode, Rect bounds) {
+        mDockedStackCreateMode = mode;
+        mDockedStackCreateBounds = bounds;
+    }
+
     /**
      * Create a new TaskStack and place it on a DisplayContent.
      * @param stackId The unique identifier of the new stack.