Merge "Move DimLayer to Root if translucent window and not multi-window" into rvc-dev

This commit is contained in:
Chavi Weingarten
2020-04-07 17:25:10 +00:00
committed by Android (Google) Code Review
2 changed files with 21 additions and 0 deletions

View File

@@ -253,6 +253,12 @@ public class DisplayArea<T extends WindowContainer> extends WindowContainer<T> {
super.prepareSurfaces();
getBounds(mTmpDimBoundsRect);
// If SystemUI is dragging for recents, we want to reset the dim state so any dim layer
// on the display level fades out.
if (forAllTasks(task -> !task.canAffectSystemUiFlags())) {
mDimmer.resetDimStates();
}
if (mDimmer.updateDims(getPendingTransaction(), mTmpDimBoundsRect)) {
scheduleAnimation();
}

View File

@@ -3348,6 +3348,21 @@ class Task extends WindowContainer<WindowContainer> {
@Override
Dimmer getDimmer() {
// If the window is in multi-window mode, we want to dim at the Task level to ensure the dim
// bounds match the area the app lives in
if (inMultiWindowMode()) {
return mDimmer;
}
// If we're not at the root task level, we want to keep traversing through the parents to
// find the root.
// Once at the root task level, we want to check {@link #isTranslucent(ActivityRecord)}.
// If true, we want to get the Dimmer from the level above since we don't want to animate
// the dim with the Task.
if (!isRootTask() || isTranslucent(null)) {
return super.getDimmer();
}
return mDimmer;
}