Crop wallpaper windows to their current target stack bounds
Crop wallpaper windows to the stack bounds of their current target to avoid them showing behind transparent windows in other stacks in split-screen mode. Bug: 27989717 Change-Id: Iff7cec201dd8061026e32af0f44380862fc37705
This commit is contained in:
@@ -23,6 +23,7 @@ import static android.view.WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED;
|
||||
import static android.view.WindowManager.LayoutParams.FLAG_SCALED;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD;
|
||||
import static android.view.WindowManager.LayoutParams.TYPE_WALLPAPER;
|
||||
import static com.android.server.wm.AppWindowAnimator.sDummyAnimation;
|
||||
import static com.android.server.wm.DragResizeMode.DRAG_RESIZE_MODE_FREEFORM;
|
||||
import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_ADD_REMOVE;
|
||||
@@ -1323,6 +1324,23 @@ class WindowStateAnimator {
|
||||
return;
|
||||
}
|
||||
|
||||
// We crop wallpaper windows to the stack bounds of their current target to avoid them
|
||||
// showing behind transparent windows in other stacks in split-screen mode.
|
||||
if (w.getBaseType() == TYPE_WALLPAPER) {
|
||||
final WindowState wallpaperTarget = mWallpaperControllerLocked.getWallpaperTarget();
|
||||
if (wallpaperTarget != null) {
|
||||
final Task task = wallpaperTarget.getTask();
|
||||
if (task != null && !task.isFullscreen()) {
|
||||
final TaskStack stack = task.mStack;
|
||||
if (stack != null && !stack.isFullscreen()) {
|
||||
stack.getDimBounds(mTmpStackBounds);
|
||||
clipRect.intersect(mTmpStackBounds);
|
||||
}
|
||||
}
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
final Task task = w.getTask();
|
||||
if (task == null || !task.cropWindowsToStackBounds()) {
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user