Fix primary activity untouchable with punch hole

The root cause is that the letterbox receives touches within the whole task,
which made the primary activity untouchable.

This CL changes to make the letterbox only cover the secondary
taskfragment area

Test: manual - repro steps in bug
Bug: 271592105

Change-Id: I2d724736d01a8fc50fe4c82c8b8cca2769d97d4f
This commit is contained in:
Charles Chen
2023-05-05 18:22:46 +08:00
parent b45aeda1d0
commit 8ea8db15b2

View File

@@ -819,13 +819,14 @@ final class LetterboxUiController {
// Get the bounds of the "space-to-fill". The transformed bounds have the highest
// priority because the activity is launched in a rotated environment. In multi-window
// mode, the task-level represents this. In fullscreen-mode, the task container does
// mode, the taskFragment-level represents this for both split-screen
// and activity-embedding. In fullscreen-mode, the task container does
// (since the orientation letterbox is also applied to the task).
final Rect transformedBounds = mActivityRecord.getFixedRotationTransformDisplayBounds();
final Rect spaceToFill = transformedBounds != null
? transformedBounds
: mActivityRecord.inMultiWindowMode()
? mActivityRecord.getTask().getBounds()
? mActivityRecord.getTaskFragment().getBounds()
: mActivityRecord.getRootTask().getParent().getBounds();
// In case of translucent activities an option is to use the WindowState#getFrame() of
// the first opaque activity beneath. In some cases (e.g. an opaque activity is using