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

Commit 92d9c818 authored by seunghyun85.lee's avatar seunghyun85.lee Committed by Wale Ogunwale
Browse files

Apply the scale to surfaceinsets when computing crop region



While in computing surface crop region, magnification specs are
not applied to surface insets from LayoutParams.

So, in case magnification specs are set,
surface crop region should be calculated considering scale factor.

(For instance, using TouchZoom in Accessibility
at AppsPermissionActivity in market app)

Bug: 20863078
Change-Id: I9e7e21e502b29208f2856918d6fcda050f515595
Signed-off-by: default avatarSeunghyun Lee <seunghyun85.lee@lge.com>
parent ce7dba6b
Loading
Loading
Loading
Loading
+15 −4
Original line number Original line Diff line number Diff line
@@ -1417,10 +1417,21 @@ class WindowStateAnimator {


        // Adjust for surface insets.
        // Adjust for surface insets.
        final LayoutParams attrs = w.getAttrs();
        final LayoutParams attrs = w.getAttrs();
        width += attrs.surfaceInsets.left + attrs.surfaceInsets.right;
        final int displayId = w.getDisplayId();
        height += attrs.surfaceInsets.top + attrs.surfaceInsets.bottom;
        float scale = 1.0f;
        left -= attrs.surfaceInsets.left;
        // Magnification is supported only for the default display.
        top -= attrs.surfaceInsets.top;
        if (mService.mAccessibilityController != null && displayId == Display.DEFAULT_DISPLAY) {
            MagnificationSpec spec =
                    mService.mAccessibilityController.getMagnificationSpecForWindowLocked(w);
            if (spec != null && !spec.isNop()) {
                scale = spec.scale;
            }
        }

        width += scale * (attrs.surfaceInsets.left + attrs.surfaceInsets.right);
        height += scale * (attrs.surfaceInsets.top + attrs.surfaceInsets.bottom);
        left -= scale * attrs.surfaceInsets.left;
        top -= scale * attrs.surfaceInsets.top;


        final boolean surfaceMoved = mSurfaceX != left || mSurfaceY != top;
        final boolean surfaceMoved = mSurfaceX != left || mSurfaceY != top;
        if (surfaceMoved) {
        if (surfaceMoved) {