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: Seunghyun Lee <seunghyun85.lee@lge.com>
This commit is contained in:
committed by
Wale Ogunwale
parent
ce7dba6bdf
commit
92d9c81835
@@ -1417,10 +1417,21 @@ class WindowStateAnimator {
|
||||
|
||||
// Adjust for surface insets.
|
||||
final LayoutParams attrs = w.getAttrs();
|
||||
width += attrs.surfaceInsets.left + attrs.surfaceInsets.right;
|
||||
height += attrs.surfaceInsets.top + attrs.surfaceInsets.bottom;
|
||||
left -= attrs.surfaceInsets.left;
|
||||
top -= attrs.surfaceInsets.top;
|
||||
final int displayId = w.getDisplayId();
|
||||
float scale = 1.0f;
|
||||
// Magnification is supported only for the default display.
|
||||
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;
|
||||
if (surfaceMoved) {
|
||||
|
||||
Reference in New Issue
Block a user