Loading services/core/java/com/android/server/policy/PhoneWindowManager.java +19 −19 Original line number Diff line number Diff line Loading @@ -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: Loading Loading @@ -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; Loading services/core/java/com/android/server/wm/AppTransition.java +1 −0 Original line number Diff line number Diff line Loading @@ -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; } Loading services/core/java/com/android/server/wm/WindowManagerService.java +8 −10 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -4399,7 +4400,6 @@ public class WindowManagerService extends IWindowManager.Stub mInputMonitor.setUpdateInputWindowsNeededLw(); mWindowPlacerLocked.performSurfacePlacement(); mInputMonitor.updateInputWindowsLw(false /*force*/); //dump(); } Loading Loading @@ -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) { Loading @@ -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) { Loading Loading @@ -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; } Loading services/core/java/com/android/server/wm/WindowStateAnimator.java +5 −1 Original line number Diff line number Diff line Loading @@ -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; Loading services/core/java/com/android/server/wm/WindowSurfacePlacer.java +1 −0 Original line number Diff line number Diff line Loading @@ -967,6 +967,7 @@ class WindowSurfacePlacer { } mService.mPolicy.finishLayoutLw(); mService.mH.obtainMessage(UPDATE_DOCKED_STACK_DIVIDER, displayContent).sendToTarget(); } /** Loading Loading
services/core/java/com/android/server/policy/PhoneWindowManager.java +19 −19 Original line number Diff line number Diff line Loading @@ -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: Loading Loading @@ -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; Loading
services/core/java/com/android/server/wm/AppTransition.java +1 −0 Original line number Diff line number Diff line Loading @@ -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; } Loading
services/core/java/com/android/server/wm/WindowManagerService.java +8 −10 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -4399,7 +4400,6 @@ public class WindowManagerService extends IWindowManager.Stub mInputMonitor.setUpdateInputWindowsNeededLw(); mWindowPlacerLocked.performSurfacePlacement(); mInputMonitor.updateInputWindowsLw(false /*force*/); //dump(); } Loading Loading @@ -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) { Loading @@ -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) { Loading Loading @@ -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; } Loading
services/core/java/com/android/server/wm/WindowStateAnimator.java +5 −1 Original line number Diff line number Diff line Loading @@ -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; Loading
services/core/java/com/android/server/wm/WindowSurfacePlacer.java +1 −0 Original line number Diff line number Diff line Loading @@ -967,6 +967,7 @@ class WindowSurfacePlacer { } mService.mPolicy.finishLayoutLw(); mService.mH.obtainMessage(UPDATE_DOCKED_STACK_DIVIDER, displayContent).sendToTarget(); } /** Loading