summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Filip Gruszczynski <gruszczy@google.com> 2015-09-30 21:44:37 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2015-09-30 21:44:37 +0000
commit6f81ff67fc2ce9def41f11bee11cc4563b0bcba5 (patch)
treeeea526acd7693bf5212f15663a60b52dcd38793c
parent5482018a314e54a3acd8cddc2fc82724d20f7bb4 (diff)
parente95b0aef6d259ff9322bd9a34e36e61737844eee (diff)
Merge "Improve visibility and layering of dock divider."
-rw-r--r--services/core/java/com/android/server/policy/PhoneWindowManager.java38
-rw-r--r--services/core/java/com/android/server/wm/AppTransition.java1
-rw-r--r--services/core/java/com/android/server/wm/WindowManagerService.java18
-rw-r--r--services/core/java/com/android/server/wm/WindowStateAnimator.java6
-rw-r--r--services/core/java/com/android/server/wm/WindowSurfacePlacer.java1
5 files changed, 34 insertions, 30 deletions
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index dbc3970cf4cf..c265000f13f5 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -2105,6 +2105,8 @@ public class PhoneWindowManager implements WindowManagerPolicy {
case TYPE_WALLPAPER:
// wallpaper is at the bottom, though the window manager may move it.
return 2;
+ case TYPE_DOCK_DIVIDER:
+ return 2;
case TYPE_PHONE:
return 3;
case TYPE_SEARCH_BAR:
@@ -2135,56 +2137,54 @@ public class PhoneWindowManager implements WindowManagerPolicy {
case TYPE_INPUT_METHOD_DIALOG:
// on-screen keyboards and other such input method user interfaces go here.
return 13;
- case TYPE_DOCK_DIVIDER:
- return 14;
case TYPE_KEYGUARD_SCRIM:
// the safety window that shows behind keyguard while keyguard is starting
- return 15;
+ return 14;
case TYPE_STATUS_BAR_SUB_PANEL:
- return 16;
+ return 15;
case TYPE_STATUS_BAR:
- return 17;
+ return 16;
case TYPE_STATUS_BAR_PANEL:
- return 18;
+ return 17;
case TYPE_KEYGUARD_DIALOG:
- return 19;
+ return 18;
case TYPE_VOLUME_OVERLAY:
// the on-screen volume indicator and controller shown when the user
// changes the device volume
- return 20;
+ return 19;
case TYPE_SYSTEM_OVERLAY:
// the on-screen volume indicator and controller shown when the user
// changes the device volume
- return 21;
+ return 20;
case TYPE_NAVIGATION_BAR:
// the navigation bar, if available, shows atop most things
- return 22;
+ return 21;
case TYPE_NAVIGATION_BAR_PANEL:
// some panels (e.g. search) need to show on top of the navigation bar
- return 23;
+ return 22;
case TYPE_SYSTEM_ERROR:
// system-level error dialogs
- return 24;
+ return 23;
case TYPE_MAGNIFICATION_OVERLAY:
// used to highlight the magnified portion of a display
- return 25;
+ return 24;
case TYPE_DISPLAY_OVERLAY:
// used to simulate secondary display devices
- return 26;
+ return 25;
case TYPE_DRAG:
// the drag layer: input for drag-and-drop is associated with this window,
// which sits above all other focusable windows
- return 27;
+ return 26;
case TYPE_ACCESSIBILITY_OVERLAY:
// overlay put by accessibility services to intercept user interaction
- return 28;
+ return 27;
case TYPE_SECURE_SYSTEM_OVERLAY:
- return 29;
+ return 28;
case TYPE_BOOT_PROGRESS:
- return 30;
+ return 29;
case TYPE_POINTER:
// the (mouse) pointer layer
- return 31;
+ return 30;
}
Log.e(TAG, "Unknown window type: " + type);
return 2;
diff --git a/services/core/java/com/android/server/wm/AppTransition.java b/services/core/java/com/android/server/wm/AppTransition.java
index a64cda60ec1b..cc51d204e98d 100644
--- a/services/core/java/com/android/server/wm/AppTransition.java
+++ b/services/core/java/com/android/server/wm/AppTransition.java
@@ -1032,6 +1032,7 @@ public class AppTransition implements Dump {
0, top - containingFrame.top, 0);
set.addAnimation(translate);
set.setDuration(DEFAULT_APP_TRANSITION_DURATION);
+ set.setZAdjustment(Animation.ZORDER_TOP);
return set;
}
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 6d0d85f6e3e9..74572cfcdee2 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -222,6 +222,7 @@ public class WindowManagerService extends IWindowManager.Stub
static final boolean HIDE_STACK_CRAWLS = true;
static final int LAYOUT_REPEAT_THRESHOLD = 4;
+
static final boolean PROFILE_ORIENTATION = false;
static final boolean localLOGV = DEBUG;
@@ -4399,7 +4400,6 @@ public class WindowManagerService extends IWindowManager.Stub
mInputMonitor.setUpdateInputWindowsNeededLw();
mWindowPlacerLocked.performSurfacePlacement();
mInputMonitor.updateInputWindowsLw(false /*force*/);
-
//dump();
}
@@ -4484,10 +4484,6 @@ public class WindowManagerService extends IWindowManager.Stub
}
stack.attachDisplayContent(displayContent);
displayContent.attachStack(stack, onTop);
- if (stack.mStackId == DOCKED_STACK_ID) {
- mH.obtainMessage(H.UPDATE_DOCKED_STACK_DIVIDER,
- displayContent).sendToTarget();
- }
moveStackWindowsLocked(displayContent);
final WindowList windows = displayContent.getWindowList();
for (int winNdx = windows.size() - 1; winNdx >= 0; --winNdx) {
@@ -4510,11 +4506,6 @@ public class WindowManagerService extends IWindowManager.Stub
void detachStackLocked(DisplayContent displayContent, TaskStack stack) {
displayContent.detachStack(stack);
stack.detachDisplay();
- // We can't directly remove the divider, because only the WM thread can do these operations
- // and we can be on AM thread.
- if (stack.mStackId == DOCKED_STACK_ID) {
- mH.obtainMessage(H.UPDATE_DOCKED_STACK_DIVIDER, displayContent).sendToTarget();
- }
}
public void detachStack(int stackId) {
@@ -8346,6 +8337,13 @@ public class WindowManagerService extends IWindowManager.Stub
} else if (wtoken != null) {
winAnimator.mAnimLayer =
w.mLayer + wtoken.mAppAnimator.animLayerAdjustment;
+ if (wtoken.mReplacingWindow && wtoken.mAnimateReplacingWindow) {
+ // We know that we will be animating a relaunching window in the near future,
+ // which will receive a z-order increase. We want the replaced window to
+ // immediately receive the same treatment, e.g. to be above the dock divider.
+ w.mLayer += TYPE_LAYER_OFFSET;
+ winAnimator.mAnimLayer += TYPE_LAYER_OFFSET;
+ }
} else {
winAnimator.mAnimLayer = w.mLayer;
}
diff --git a/services/core/java/com/android/server/wm/WindowStateAnimator.java b/services/core/java/com/android/server/wm/WindowStateAnimator.java
index a32b17139bb3..60bf57154bc6 100644
--- a/services/core/java/com/android/server/wm/WindowStateAnimator.java
+++ b/services/core/java/com/android/server/wm/WindowStateAnimator.java
@@ -1405,7 +1405,11 @@ class WindowStateAnimator {
private void adjustCropToStackBounds(WindowState w, Rect clipRect) {
final AppWindowToken appToken = w.mAppToken;
- if (appToken != null && appToken.mCropWindowsToStack) {
+ // We don't apply the the stack bounds to the window that is being replaced, because it was
+ // living in a different stack. If we suddenly crop it to the new stack bounds, it might
+ // get cut off. We don't want it to happen, so we let it ignore the stack bounds until it
+ // gets removed. The window that will replace it will abide them.
+ if (appToken != null && appToken.mCropWindowsToStack && !appToken.mReplacingWindow) {
TaskStack stack = w.getTask().mStack;
stack.getBounds(mTmpStackBounds);
final int surfaceX = (int) mSurfaceX;
diff --git a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java
index d86a8afe1499..df0a1c9d43d5 100644
--- a/services/core/java/com/android/server/wm/WindowSurfacePlacer.java
+++ b/services/core/java/com/android/server/wm/WindowSurfacePlacer.java
@@ -967,6 +967,7 @@ class WindowSurfacePlacer {
}
mService.mPolicy.finishLayoutLw();
+ mService.mH.obtainMessage(UPDATE_DOCKED_STACK_DIVIDER, displayContent).sendToTarget();
}
/**