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

Commit efd3d1b4 authored by Filip Gruszczynski's avatar Filip Gruszczynski
Browse files

Fix misaligned from and to recents animation.

Because of the small translation that accounts for the status bar, the
animating window gets cropped at the beginning of from recents and at
the end of to recents animation.

Change-Id: I36878c6ff84903db05335890b03199878174c5af
parent b3a54f91
Loading
Loading
Loading
Loading
+12 −16
Original line number Diff line number Diff line
@@ -760,26 +760,24 @@ public class AppTransition implements Dump {
                    a = createAspectScaledThumbnailEnterNonFullscreenAnimationLocked(
                            containingFrame, surfaceInsets, taskId);
                } else {
                    mTmpFromClipRect.set(containingFrame);
                    // exclude top screen decor (status bar) region from the source clip.
                    mTmpFromClipRect.top = contentInsets.top;
                    // App window scaling up to become full screen
                    mTmpToClipRect.set(containingFrame);
                    if (orientation == Configuration.ORIENTATION_PORTRAIT) {
                        // In portrait, we scale the width and clip to the top/left square
                        scale = thumbWidth / appWidth;
                        scaledTopDecor = (int) (scale * contentInsets.top);
                        int unscaledThumbHeight = (int) (thumbHeight / scale);
                        mTmpFromClipRect.set(containingFrame);
                        mTmpFromClipRect.bottom = (mTmpFromClipRect.top + unscaledThumbHeight);
                        mTmpToClipRect.set(containingFrame);
                        mTmpFromClipRect.bottom = mTmpFromClipRect.top + unscaledThumbHeight;
                    } else {
                        // In landscape, we scale the height and clip to the top/left square
                        scale = thumbHeight / (appHeight - contentInsets.top);
                        scaledTopDecor = (int) (scale * contentInsets.top);
                        int unscaledThumbWidth = (int) (thumbWidth / scale);
                        mTmpFromClipRect.set(containingFrame);
                        mTmpFromClipRect.right = (mTmpFromClipRect.left + unscaledThumbWidth);
                        mTmpToClipRect.set(containingFrame);
                        mTmpFromClipRect.right = mTmpFromClipRect.left + unscaledThumbWidth;
                    }
                    // exclude top screen decor (status bar) region from the source clip.
                    mTmpFromClipRect.top = contentInsets.top;

                    mNextAppTransitionInsets.set(contentInsets);

@@ -821,25 +819,23 @@ public class AppTransition implements Dump {
            }
            case THUMBNAIL_TRANSITION_EXIT_SCALE_DOWN: {
                // App window scaling down from full screen
                mTmpFromClipRect.set(containingFrame);
                mTmpToClipRect.set(containingFrame);
                // exclude top screen decor (status bar) region from the destination clip.
                mTmpToClipRect.top = contentInsets.top;
                if (orientation == Configuration.ORIENTATION_PORTRAIT) {
                    // In portrait, we scale the width and clip to the top/left square
                    scale = thumbWidth / appWidth;
                    scaledTopDecor = (int) (scale * contentInsets.top);
                    int unscaledThumbHeight = (int) (thumbHeight / scale);
                    mTmpFromClipRect.set(containingFrame);
                    mTmpToClipRect.set(containingFrame);
                    mTmpToClipRect.bottom = (mTmpToClipRect.top + unscaledThumbHeight);
                    mTmpToClipRect.bottom = mTmpToClipRect.top + unscaledThumbHeight;
                } else {
                    // In landscape, we scale the height and clip to the top/left square
                    scale = thumbHeight / (appHeight - contentInsets.top);
                    scaledTopDecor = (int) (scale * contentInsets.top);
                    int unscaledThumbWidth = (int) (thumbWidth / scale);
                    mTmpFromClipRect.set(containingFrame);
                    mTmpToClipRect.set(containingFrame);
                    mTmpToClipRect.right = (mTmpToClipRect.left + unscaledThumbWidth);
                    mTmpToClipRect.right = mTmpToClipRect.left + unscaledThumbWidth;
                }
                // exclude top screen decor (status bar) region from the destination clip.
                mTmpToClipRect.top = contentInsets.top;

                mNextAppTransitionInsets.set(contentInsets);

+0 −2
Original line number Diff line number Diff line
@@ -1190,8 +1190,6 @@ class WindowStateAnimator {
            mDtDy = tmpFloats[Matrix.MSCALE_Y];
            float x = tmpFloats[Matrix.MTRANS_X];
            float y = tmpFloats[Matrix.MTRANS_Y];
            int w = frame.width();
            int h = frame.height();
            mWin.mShownPosition.set((int) x, (int) y);

            // Now set the alpha...  but because our current hardware