Don't offset TaskView when it is not in the bounds of parent.

- This offset leads to 2 problems:
  1. If TaskView is inside a scrollable view and off the parent bounds, the surface bounds become out of sync with window bounds.
  2. As a result of 1. the window always goes to 0,0 & system thinks that the status bar insets should be applied and hence the taskview is shifted down.

Fix: 239252850
Test: atest TaskView
Test: Tested manually by making TaskView go out of parent bounds.
Change-Id: Ia5b614f9f4d681c48a9a117a06c98a576670e7dc
Merged-In: Ia5b614f9f4d681c48a9a117a06c98a576670e7dc
This commit is contained in:
Gaurav Bhola
2022-12-27 09:37:55 -08:00
parent a9ad4038b3
commit 6ef355ab9c

View File

@@ -224,16 +224,6 @@ public class TaskView extends SurfaceView implements SurfaceHolder.Callback,
mObscuredTouchRegion = obscuredRegion;
}
private void onLocationChanged(WindowContainerTransaction wct) {
// Update based on the screen bounds
getBoundsOnScreen(mTmpRect);
getRootView().getBoundsOnScreen(mTmpRootRect);
if (!mTmpRootRect.contains(mTmpRect)) {
mTmpRect.offsetTo(0, 0);
}
wct.setBounds(mTaskToken, mTmpRect);
}
/**
* Call when view position or size has changed. Do not call when animating.
*/
@@ -246,10 +236,15 @@ public class TaskView extends SurfaceView implements SurfaceHolder.Callback,
if (isUsingShellTransitions() && mTaskViewTransitions.hasPending()) return;
WindowContainerTransaction wct = new WindowContainerTransaction();
onLocationChanged(wct);
updateWindowBounds(wct);
mSyncQueue.queue(wct);
}
private void updateWindowBounds(WindowContainerTransaction wct) {
getBoundsOnScreen(mTmpRect);
wct.setBounds(mTaskToken, mTmpRect);
}
/**
* Release this container if it is initialized.
*/
@@ -573,7 +568,7 @@ public class TaskView extends SurfaceView implements SurfaceHolder.Callback,
.apply();
// TODO: determine if this is really necessary or not
onLocationChanged(wct);
updateWindowBounds(wct);
} else {
// The surface has already been destroyed before the task has appeared,
// so go ahead and hide the task entirely