Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a8358061 authored by Craig Mautner's avatar Craig Mautner
Browse files

Keep layout from overwriting translate dimensions

If the layout goes through more than one pass after detecting a window
movement but before animation begins then the later pass overwrites
the animation offsets. The incorrect values are large leading to an
animation starting location in the bottom right corner.

Fixes bug 6450310.

Change-Id: I0f74e67b3e9a15a9246151abf6d47384509340e9
parent a4e2ec64
Loading
Loading
Loading
Loading
+1 −17
Original line number Diff line number Diff line
@@ -6674,8 +6674,7 @@ public class WindowManagerService extends IWindowManager.Stub
        public static final int SET_TRANSPARENT_REGION = ANIMATOR_WHAT_OFFSET + 1;
        public static final int SET_WALLPAPER_OFFSET = ANIMATOR_WHAT_OFFSET + 2;
        public static final int SET_DIM_PARAMETERS = ANIMATOR_WHAT_OFFSET + 3;
        public static final int SET_MOVE_ANIMATION = ANIMATOR_WHAT_OFFSET + 4;
        public static final int CLEAR_PENDING_ACTIONS = ANIMATOR_WHAT_OFFSET + 5;
        public static final int CLEAR_PENDING_ACTIONS = ANIMATOR_WHAT_OFFSET + 4;

        private Session mLastReportedHold;

@@ -7159,18 +7158,6 @@ public class WindowManagerService extends IWindowManager.Stub
                    break;
                }

                case SET_MOVE_ANIMATION: {
                    WindowAnimator.SetAnimationParams params =
                            (WindowAnimator.SetAnimationParams) msg.obj;
                    WindowStateAnimator winAnimator = params.mWinAnimator;
                    winAnimator.setAnimation(params.mAnimation);
                    winAnimator.mAnimDw = params.mAnimDw;
                    winAnimator.mAnimDh = params.mAnimDh;

                    scheduleAnimationLocked();
                    break;
                }

                case CLEAR_PENDING_ACTIONS: {
                    mAnimator.clearPendingActions();
                    break;
@@ -8418,9 +8405,6 @@ public class WindowManagerService extends IWindowManager.Stub
                    winAnimator.setAnimation(a);
                    winAnimator.mAnimDw = w.mLastFrame.left - w.mFrame.left;
                    winAnimator.mAnimDh = w.mLastFrame.top - w.mFrame.top;
                } else {
                    winAnimator.mAnimDw = innerDw;
                    winAnimator.mAnimDh = innerDh;
                }

                //Slog.i(TAG, "Window " + this + " clearing mContentChanged - done placing");