Dimming on an embedded TaskFragment vs. parent Task
Migrate the dimmer to TaskFragment and the dim surface needs to be offset relative to its parent task. Bug: 202379687 Test: verify dim in two pane Change-Id: I95fe47ebc66d419b42c1da8cc8216773c295f1d1
This commit is contained in:
@@ -473,7 +473,6 @@ class Task extends TaskFragment {
|
||||
// to layout without loading all the task snapshots
|
||||
final PersistedTaskSnapshotData mLastTaskSnapshotData;
|
||||
|
||||
private Dimmer mDimmer = new Dimmer(this);
|
||||
private final Rect mTmpDimBoundsRect = new Rect();
|
||||
|
||||
/** @see #setCanAffectSystemUiFlags */
|
||||
|
||||
@@ -161,6 +161,8 @@ class TaskFragment extends WindowContainer<WindowContainer> {
|
||||
*/
|
||||
int mMinHeight;
|
||||
|
||||
Dimmer mDimmer = new Dimmer(this);
|
||||
|
||||
/** This task fragment will be removed when the cleanup of its children are done. */
|
||||
private boolean mIsRemovalRequested;
|
||||
|
||||
@@ -2337,6 +2339,34 @@ class TaskFragment extends WindowContainer<WindowContainer> {
|
||||
sendTaskFragmentVanished();
|
||||
}
|
||||
|
||||
@Override
|
||||
Dimmer getDimmer() {
|
||||
// If the window is in an embedded TaskFragment, we want to dim at the TaskFragment.
|
||||
if (asTask() == null) {
|
||||
return mDimmer;
|
||||
}
|
||||
|
||||
return super.getDimmer();
|
||||
}
|
||||
|
||||
@Override
|
||||
void prepareSurfaces() {
|
||||
if (asTask() != null) {
|
||||
super.prepareSurfaces();
|
||||
return;
|
||||
}
|
||||
|
||||
mDimmer.resetDimStates();
|
||||
super.prepareSurfaces();
|
||||
|
||||
// Bounds need to be relative, as the dim layer is a child.
|
||||
final Rect dimBounds = getBounds();
|
||||
dimBounds.offsetTo(0 /* newLeft */, 0 /* newTop */);
|
||||
if (mDimmer.updateDims(getPendingTransaction(), dimBounds)) {
|
||||
scheduleAnimation();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
boolean canBeAnimationTarget() {
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user