diff options
| author | 2022-09-05 10:30:14 +0000 | |
|---|---|---|
| committer | 2022-09-05 10:34:39 +0000 | |
| commit | 768ee2c04cc8ca9bb48b7564920cb88a98c86387 (patch) | |
| tree | 475f602cf0f7b8e8a535f62c72ab3f25d9639e44 /libs | |
| parent | fc9ccbb8a0ac6071ca8413dfc17d28c9e1207a9e (diff) | |
Fix no response after entered split screen
Make sure to update stage root's bounds and reset the surface position
of opening apps to prevent double offset instead.
Fix: 245055674
Bug: 244671191
Test: enter split screen by long pressing on shortcut, anotehr side can
receive touch events after entered split screen.
Change-Id: Ie186cfa3b1406514ce8c33cd7321b8b9df40af26
Diffstat (limited to 'libs')
| -rw-r--r-- | libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java | 19 |
1 files changed, 9 insertions, 10 deletions
diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java index 8d405f4f6fcf..199007d7f577 100644 --- a/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java +++ b/libs/WindowManager/Shell/src/com/android/wm/shell/splitscreen/StageCoordinator.java @@ -589,17 +589,17 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, return; } - // The surfaces of splitting tasks were placed with window bounds when preparing the - // transition, so update divider surface separately. - final RemoteAnimationTarget dividerTarget = getDividerBarLegacyTarget(); - mSplitLayout.getRefDividerBounds(mTempRect1); - t.setLayer(dividerTarget.leash, Integer.MAX_VALUE) - .setPosition(dividerTarget.leash, mTempRect1.left, mTempRect1.top); - setDividerVisibility(true, t); + // Wrap the divider bar into non-apps target to animate together. + nonApps = ArrayUtils.appendElement(RemoteAnimationTarget.class, nonApps, + getDividerBarLegacyTarget()); + updateSurfaceBounds(mSplitLayout, t, false); + setDividerVisibility(true, t); for (int i = 0; i < apps.length; ++i) { if (apps[i].mode == MODE_OPENING) { t.show(apps[i].leash); + // Reset the surface position of the opening app to prevent double-offset. + t.setPosition(apps[i].leash, 0, 0); } } t.apply(); @@ -614,9 +614,8 @@ public class StageCoordinator implements SplitLayout.SplitLayoutHandler, }; Transitions.setRunningRemoteTransitionDelegate(adapter.getCallingApplication()); try { - adapter.getRunner().onAnimationStart(transit, apps, wallpapers, - ArrayUtils.appendElement(RemoteAnimationTarget.class, nonApps, - dividerTarget), wrapCallback); + adapter.getRunner().onAnimationStart( + transit, apps, wallpapers, nonApps, wrapCallback); } catch (RemoteException e) { Slog.e(TAG, "Error starting remote animation", e); } |