From 2fbe033f9d634505ff9e90f232c0339f616d7b86 Mon Sep 17 00:00:00 2001 From: Jorim Jaggi Date: Tue, 24 Nov 2015 17:37:03 -0800 Subject: [PATCH] Allow stacks to be placed outside of display When dismissing the docked stack, we animate the divider to position -12dp, so the full-screen stack is exactly full-screen when the dismiss animation is done. Previously, this was prevented by window manager. Allow it to fix the animation. Change-Id: Iee4505023dc3f6907d56851965b156235f9f97f2 --- .../android/systemui/stackdivider/DividerView.java | 12 ++++++++++++ services/core/java/com/android/server/wm/Task.java | 8 -------- .../core/java/com/android/server/wm/TaskStack.java | 5 ----- 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java index f045814333de1..98f3f0c3b60d7 100644 --- a/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java +++ b/packages/SystemUI/src/com/android/systemui/stackdivider/DividerView.java @@ -317,6 +317,18 @@ public class DividerView extends FrameLayout implements OnTouchListener, outRect.top = position + mDividerWindowWidth - 2 * mDividerInsets; break; } + if (outRect.left > outRect.right) { + outRect.left = outRect.right; + } + if (outRect.top > outRect.bottom) { + outRect.top = outRect.bottom; + } + if (outRect.right < outRect.left) { + outRect.right = outRect.left; + } + if (outRect.bottom < outRect.top) { + outRect.bottom = outRect.top; + } } public void resizeStack(int position) { diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java index 46cd7cd5b0aa1..01b508af578ac 100644 --- a/services/core/java/com/android/server/wm/Task.java +++ b/services/core/java/com/android/server/wm/Task.java @@ -190,14 +190,6 @@ class Task implements DimLayer.DimLayerUser { bounds = mTmpRect; mFullscreen = true; } else { - if ((mStack.mStackId != FREEFORM_WORKSPACE_STACK_ID - && mStack.mStackId != PINNED_STACK_ID) || bounds.isEmpty()) { - // ensure bounds are entirely within the display rect - if (!bounds.intersect(mTmpRect)) { - // Can't set bounds outside the containing display...Sorry! - return BOUNDS_CHANGE_NONE; - } - } mFullscreen = mTmpRect.equals(bounds); } } diff --git a/services/core/java/com/android/server/wm/TaskStack.java b/services/core/java/com/android/server/wm/TaskStack.java index 9d07fb03cd4c8..81c4b2ac28f41 100644 --- a/services/core/java/com/android/server/wm/TaskStack.java +++ b/services/core/java/com/android/server/wm/TaskStack.java @@ -143,11 +143,6 @@ public class TaskStack implements DimLayer.DimLayerUser { bounds = mTmpRect; mFullscreen = true; } else { - // ensure bounds are entirely within the display rect - if (!bounds.intersect(mTmpRect)) { - // Can't set bounds outside the containing display.. Sorry! - return false; - } mFullscreen = mTmpRect.equals(bounds); } }